AmazingCounters.com

移位操作符 位操作符

1.移位操作:把一个值的位左移或右移

     左移:<<       右移:>>

  逻辑移位:用0补齐

  算术移位:左移时用0补齐,右移时整数用0补齐,负数用1补齐

 

  1.左移:高位舍弃,低位补0

    5 << 2

    00000101   --->   00010100    由5变为20

    左移k位相当于扩大2^k倍

  2.右移:

    无符号位是逻辑移位,有符号位采用逻辑移位还是算术移位由编译器决定

    右移相当于缩小2^k倍

 

说明:1.采用有符号位右移程序不可移植

   2.移位负数位属于未定义行为,由编译器决定

      如   a << -5    

 

2.位操作符

  & 与         | 或          ^亦或    ~非

  1.把value中的n位(从右至左)上的值设为1

    value = value |  (1 << n);

  2.把value中的n位(从右至左)上的值设为0

    value = value & (~ (1 << n));

  3.对指定位进行测试为1则返回非零值

     value = value & (1 << n)  

 

posted @ 2015-12-04 22:23  hugue  阅读(910)  评论(0)    收藏  举报