移位算子与一个补码的逐位关系

时间:2017-03-21 19:27:32

标签: bit-manipulation bitwise-operators bit-shift

我是Bitwise Operator的新手,我在维基百科中找到了以下一行" Bitwise运算符" - (https://en.wikipedia.org/wiki/Bitwise_operation

  

如果二进制数被视为一个'补充,然后相同   右移操作导致除以2n并向四舍五入   零。

但不确定它是什么意思。请帮我理解这一点。

1 个答案:

答案 0 :(得分:0)

这是关于右移操作。以下答案来自我自己的博客:

Bitwise Operations

>>是一个右移位运算符,它的运算方式与左移运算符完全相同,但它仅在2个方面有所不同。

  
      
  1. 如果数字为负数(最高有效位为1),则填充间隙为1,否则为0

  2.   
  3. 它从右移位

  4.   
7 >> 2 

0000 0111 >> 2 

0000 01 (See two 1’s from right have been shifted) 

00 0000 01 (Added two 0’s, because number is positive) 

0000 0001 = 1 

所以7 >> 2 = 1

对于负数,它用1而不是0填补空白。

记住7 >> 2 = 1-7 >> 2 = -1

它只是保留了标志,其他一切都保持不变。如果你仔细观察右移操作符,你会发现它可以写成:

7 >> 2 => (7) / (2^2) => 7/4 => 1

这就是维基百科的含义,您可以将右移运营商视为:

NUMBER(7)/ power(2,NUMBER_OF_TIMES(2))并将其四舍五入