算数移位(<<, >>)与逻辑移位

<<, >>是算数移位,也就是-1,如果右移,则 最高位补1; 左移,则右边补0;
但是uint32_t的10 00 00 00 右边移动后,是什么?补0呗,因为大于0
所以所有的位移操作都最好定义为unsigned data


什么叫逻辑移位和算术移位
1)算术移位 当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算.算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0.
2)逻辑移位 逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补"0".逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0.
逻辑移位:不考虑正负号
算术移位:考虑正负号.
e g:1000000000000000(右移2位) 0000000000000000(左移2位)
逻辑移位:0010000000000000 0000000000000000
算术移位:1110000000000000 1000000000000000
注:算术右移时,如果被移动的值为负数,补1; 否则,补0.逻辑左移时,补0.
逻辑移位时,不用保留正负号(第一个),统一补0.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值