我最近遇到了以下代码行,我不知道>>
运算符的含义以及如何计算它。
int dat;
int val;
dat = (125*val)>>8 ;
如果有人可以告诉我它是如何运作的见解以及>>
的技术名称,我将非常感激。
编辑:有些人提到了val
的适当初始化,以使程序正常运行。这是正确的,我的主程序初始化了val
的值,但为了理解dat
的计算概念,假设val
等于任意整数n
。
答案 0 :(得分:1)
第三行中的计算采用val
的值(未定义,您必须初始化它!)并将其乘以125.此操作的结果向右移位。
位移8表示所有位位置向右移位8,因此256值位成为1值位。例如:
259 >> 8
二进制表示: 100000011>> 8 == 1
而结果1是259的二进制表示的前1个。
右移与除以2相同(四舍五入到下一个较小的整数)。
对有符号类型进行位移是危险的,因为移位负值可能会导致符号位移。
答案 1 :(得分:0)
in c ++>>意味着向右移代码
int dat = (125*val)>>8 ;
将是:
int dat = 125 * val;
for(int i = 0; i < 8; i++)
{
dat = dat / 2;
}
答案 2 :(得分:0)
所以要解释一下:
int dat;
int val = 4; //initialized.... for example
dat = (125*val); // dat = 500
dat = 500>>8;
500 = 111110100 所以 500>&gt; 8 =&gt; 1
dat = 1;