C++中左移和右移位具体的步骤是怎么回事?

像i>>2是怎么具体做到的?... 像i>>2是怎么具体做到的? 展开
 我来答
mlt598985891
2008-12-16 · TA获得超过1230个赞
知道小有建树答主
回答量:1128
采纳率:0%
帮助的人:0
展开全部
这是语言内部实现的。
不过总之就是将数的对应二进制左移或者右移,移了以后空出的补零
例如int i = 5的二进制是 00000101
i>>2 右移两位--> 00000001 (左边空出的补零)
i<<2 左移两位--> 00010100 (右边空出的补零)
不知楼主发现没有,右移一位就相当于将原来的数除以2,左移就相当于将原来的数乘以2.就像我们的十进制的小数点那样
江湖三脚猫Django
2008-12-16 · TA获得超过3495个赞
知道大有可为答主
回答量:3333
采纳率:100%
帮助的人:3168万
展开全部
具体情况请去看《汇编语言》,这里简单解释下。
比如i是unsigned int型4字节32位,假设i=101,即00000000 00000000 00000000 01100101,右移1位即所有位数向右移动一位,最高位补0,最低位移出寄存器抛弃(看具体情况),结果就是00000000 00000000 00000000 00110010,即50;然后再右移一位结果就是00000000 00000000 00000000 00011001,即25.
可以看出来,右移一位相当于除以2,左移一位相当于乘以2.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式