-1

我最近遇到了以下代码行,我不知道是什么>>运算符的含义以及如何计算它。

int dat;
int val;
dat = (125*val)>>8 ;

如果有人能给我关于它的工作原理和技术名称的见解>>,我将不胜感激。

编辑:你们中的一些人提到val了程序正确运行的充分初始化。没错,我的主程序已经为 初始化了一个值val,但是为了理解 的计算概念dat,我们假设val等于任意整数n

4

3 回答 3

1

第三行的计算取val(未定义,你必须初始化它!)的值并乘以 125。此操作的结果向右移位。

位移 8 位是指所有位的位置都向右移动 8 位,这样 256 值的位就变成了 1 值的位。例子:

259 >> 8

二进制表示:100000011 >> 8 == 1

而结果 1 是 259 的二进制表示的第一个 1。

右移与除以 2 相同(四舍五入到下一个较小的整数)。

对有符号类型进行位移是危险的,因为位移负值可能会导致符号位位移。

于 2013-07-12T09:15:25.003 回答
0

在 c++ 中 >> 意味着将代码右移

int dat = (125*val)>>8 ;

将会:

int dat = 125 * val;
for(int i = 0; i < 8; i++)
{
   dat = dat / 2;
}
于 2013-07-12T09:12:37.767 回答
0

所以稍微解释一下:

int dat;
int val = 4; //initialized.... for example
dat = (125*val); // dat = 500
dat = 500>>8;

500 = 111110100 所以 500>>8 => 1

 dat = 1;
于 2013-07-12T09:18:27.417 回答