位运算操作符_

位运算操作符

>> 算数右移动

<< 左移位运算

1 算数右移位操作符 >>

exmp 1

   int a1 = 12 >>1;

变量a取值为6

exmp 2

 int a2 = 12>>2//-3

舍弃二进制数的最后两位 在二进制数的开头增加两位符号位.

-12是负数故增加两位符号位为11

正12-->负12

0000 1100

取反

1111 0011

加1

1111 0100

-12的二进制形式

1111 0100

1111 1101

负数-->正数

1111 1101

1111 1100 <1>-1

1111 1100 <2>取反

0000 0011

---------------

    3 由于负数故为-3

example 3

int a3 = 128 >>2;//取值为32

128 二进制数

 0000 0000

 1000 0000

右移动两位

  0010 0000

32

emp4

int a4 = 129>>2;//取值为32

129 二进制数

1000 0001

右移动两位

0010 0000

------------

32

公式

a>>b 等价于 a/2^(b%32)

a除以2的b摸32次方 

12>>1 等价 12/2^1 = 6

原文地址:https://www.cnblogs.com/cici-new/p/3590903.html