黑马程序员技术交流社区

标题: 关于>>右移的问题 [打印本页]

作者: Hi围城    时间: 2014-3-15 10:56
标题: 关于>>右移的问题
本帖最后由 Hi围城 于 2014-3-15 23:45 编辑

4 << 3 的值为什么是32?你们是怎么理解的?
作者: 脸皮猴    时间: 2014-3-15 11:32
4<<3 意思是将4右移3位,
可以这么分析
4用二进制表示为 0b00000100
右移3位后为       0b00100000  = 十进制 32
简单说X<<Y  结果是X乘以2的Y次方
4<<3       就是可以说是 4乘以2的3次方 4*2*2*2 = 32!

作者: 牧之    时间: 2014-3-15 11:56
本帖最后由 牧之 于 2014-3-15 18:38 编辑

右移n个位置 就相当于 乘以2的n次方  就是4乘以3个2  就是32啊
作者: apple_victor    时间: 2014-3-15 15:36
可以这样分析
4的二进制是
0000 0000 0000 0000 0000 0000 0000 0100
你要求4要左移3位,那么即是:
0000 0000 0000 0000 0000 0000 0010 0000
此时你可以把他换算一下结果:1*2的五次方;即2为32.

这是一个规律:向左移n位,就是乘以2的n次方,向右移n位,就是除以2的n次方
作者: 悟中生有    时间: 2014-3-15 15:56
左移<<  4<<3  ==4*2的3次方;右移>>  4>>3 == 4/2的3次方。
作者: z82454642    时间: 2014-3-15 20:58
4<<3就是将 4的用2禁止表示整体往左移3位,空位补0
结果如下:

0000 0000 0000 0010  4
0000 0000 0000 0100  8
0000 0000 0000 1000  16
0000 0000 0001 0000  32

作者: cnchenys    时间: 2014-3-15 21:39
4的二进制是 0000 0000 0000 0000 0000 0000 0000 0100 你要求4要左移3位,那么即是: 0000 0000 0000 0000 0000 0000 0010 0000 此时你可以把他换算一下结果:1*2的五次方;即2为32.
作者: Hi围城    时间: 2014-3-15 23:47
脸皮猴 发表于 2014-3-15 11:32
4

嗯,应该是左移3位吧?
作者: Hi围城    时间: 2014-3-15 23:49
牧之 发表于 2014-3-15 11:56
右移n个位置 就相当于 乘以2的n次方  就是4乘以3个2  就是32啊

嗯,我记住了。
作者: Hi围城    时间: 2014-3-15 23:51
apple_victor 发表于 2014-3-15 15:36
可以这样分析
4的二进制是
0000 0000 0000 0000 0000 0000 0000 0100

嗯,thank you.
作者: Hi围城    时间: 2014-3-15 23:52
悟中生有 发表于 2014-3-15 15:56
左移>3 == 4/2的3次方。

嗯,都是高手啊~!
作者: Hi围城    时间: 2014-3-15 23:54
z82454642 发表于 2014-3-15 20:58
4

应该是二进制吧。
作者: Hi围城    时间: 2014-3-15 23:56
cnchenys 发表于 2014-3-15 21:39
4的二进制是 0000 0000 0000 0000 0000 0000 0000 0100 你要求4要左移3位,那么即是: 0000 0000 0000 0000 ...

谢谢啦,热心人啊。。

作者: 脸皮猴    时间: 2014-3-16 07:32
Hi围城 发表于 2014-3-15 23:47
嗯,应该是左移3位吧?

好吧···我错了··呵呵··我体育;P老师走得早···左右不分···
作者: Hi围城    时间: 2014-3-16 09:10
不过,还是谢谢啦。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2