首页 > 其他 > 详细

位移的计算

时间:2014-02-15 04:29:38      阅读:369      评论:0      收藏:0      [点我收藏+]

一、位运算一般用于2的次幂算法中,比乘除速度快
 1、左移
 比如:3<<1  将3的二进制数向左移1位,后面空缺补0------直接可运算为:3*2的1次幂 = 6
    4<<2  就是4*2的2次幂=16
 2、右移
 比如:6>>1  将6的二进制数向右移1位,那么前面空缺的就补0或1,这取决于开始时最前面的那个数保持一致就可以,因为二进制中最前位0表示正数,1表示负数
    6>>1  直接可运算为:6/2的1次幂 = 3
 3、无符号右移
 比如:6>>>1  将6的二进制数向右移1位,那么前面空缺的就补0
 
 示例如下:
 
 24<<3  :24的二进制是00000000 00000000 00000000 00011000,向左移3位且末尾需要0补齐空缺,00000 00000000 00000000 00011000000,十进制为192
          可简化为 24*2的3次幂=192
 6>>1   : 6的二进制是 00000000 00000000 00000000 00000110,向右移1位且保持最高位数不变, 000000000 00000000 00000000 0000011,十进制为3
          可简化为 6/2的1次幂 = 3
 24>>>3 : 24的二进制是00000000 00000000 00000000 00011000,向右移3位且最高位需要0补齐空缺, 00000000000 00000000 00000000 00011 ,十进制为3
   

二、负数的二进制表示
    以正数的补码形式表示
   补码:原码转反码再加1
   比如:6的二进制是00000000 00000000 00000000 00000110
          反码就是  11111111 11111111 11111111 11111001
          补码就是  11111111 11111111 11111111 11111010  表示-6
  
   示例如下:
  
   -6>>>1 :6的二进制是 00000000 00000000 00000000 00000110
    反码就是   11111111 11111111 11111111 11111001
    补码就是   11111111 11111111 11111111 11111010  表示-6 向右移1位且最高位补0 ,就是011111111 11111111 11111111 1111101,十进制就是2147483645

位移的计算

原文:http://www.cnblogs.com/bbthome/p/3549605.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!