关于C语言位运算的问题

2013-10-20 15:20:53 +08:00
 yxqcyl
怎么理解左移一位就相当于乘以2? 这是什么原理?
2597 次点击
所在节点    问与答
6 条回复
timonwong
2013-10-20 15:38:49 +08:00
在不溢出的情况下
设原数为n,左移一位就是右边补0,等于 n * 10(2)
而 10(2) = 2(10)
edgar
2013-10-20 15:42:13 +08:00
用10进制来演示就是:如果把一个数1234左移一位就是12340,就相当于1234×10。
likexian
2013-10-20 15:45:56 +08:00
01 << 1 = 10 = 2
io
2013-10-20 16:05:36 +08:00
2进制就是这样的。
ETiV
2013-10-20 19:58:33 +08:00
因为是“2”进制

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

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

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

当成公理理解,无需证明
yxqcyl
2013-10-20 20:02:45 +08:00
感谢各位,明了了!

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

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

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

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

© 2021 V2EX