浏览 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 大家会了吗? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |