关于C语言位运算的问题

2013 年 10 月 20 日
 yxqcyl
怎么理解左移一位就相当于乘以2? 这是什么原理?
2928 次点击
所在节点    问与答
6 条回复
timonwong
2013 年 10 月 20 日
在不溢出的情况下
设原数为n,左移一位就是右边补0,等于 n * 10(2)
而 10(2) = 2(10)
edgar
2013 年 10 月 20 日
用10进制来演示就是:如果把一个数1234左移一位就是12340,就相当于1234×10。
likexian
2013 年 10 月 20 日
01 << 1 = 10 = 2
io
2013 年 10 月 20 日
2进制就是这样的。
ETiV
2013 年 10 月 20 日
因为是“2”进制

所以右边多一个0,等于原数*2

“10”进制,右边多个0,等于原数*10

8进制……,*8
16进制……,*16

当成公理理解,无需证明
yxqcyl
2013 年 10 月 20 日
感谢各位,明了了!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/86189

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX