二进制移位

[color=green][b]首选我先说下什么是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

[/b][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值