论坛首页 入门技术论坛

二进制移位详解

浏览 7314 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-03-18  
首选我先说下什么是2进制、和16进制
2进制:2进1,通过1和0两个数字来表示一个整形数字
16进制:16进1,通过0、2、3、4、5、6、7、8、9、a、b、c、d、e、f来表示一个数字

2进制里如何表示0-10这个数字呢
2进制:0、1、10、11、100、101、110、111、1000、1001、1010
16进制里如何表示0-17的数字呢
16进制:0x0、0x1、0x2、0x3、0x4...0x9、0xa、0xb、0xc、0xd、0xe、0xf、0x10、ox11
(如果这个规律看不懂那就自己面壁去吧)

我来解释下在程序里出现的a<<b、a>>b 这种方式就是二进制移位运算,也是一种最高效的运算方式,根据以上提供的2进制规律进行移位,a<<b是指a的2进制位向左移动b位.a>>b是指a的2进制位向右移动b位。
我举个简单例子:2<<1 1<<2 7>>2 5>>3(我这里列举一个比较小的数字比较容易懂)
根据以上提供的数字0-10的2进制位可以知道整数2的2进制位是10,2<<1的意思是二进制位往左移1位。10往左移1位的结果是100(右边加一个0),100正好是整数4的2进制位。所以2<<1的运算结果是4。
1<<2,1的2进制位是1,1向左移两位就是100,也是4。所以1<<2的运算结果也是4
7>>2,7的2进制位是111,向右移动2位的结果是1,1正好是整数1的2进制位 所以7>>2的运算结果是1
5>>3,5的2进制位是101,向右移动3位的后就没了。没了就用0表示,0正好是整数0的2进制位。所以5>>3的运算结果是0
大家会了吗?

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics