首页 新闻 会员 周边

int i = 1 i >> 32或者i << 32都等于1,为什么?

0
[已解决问题] 解决于 2012-10-26 09:37

int i = 1 i >> 32或者i << 32都等于1,为什么?请问有高手能详细回答下?

pigwing的主页 pigwing | 初学一级 | 园豆:168
提问于:2012-10-25 17:35
< >
分享
最佳答案
1

i >> n 和 i << n,在 n>=32的时候效果等同于n%32(这很好理解,因为i是int,那么移位操作位数最大就是31,如果这里是long的话那么最大就是63),因此 i >> 32 其实是 i >> 0,即没有任何移位。

奖励园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2012-10-25 18:00
其他回答(2)
0

右移是除,左移是乘。1除1除32次和1乘1乘32次当然都还是1了。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-25 17:49

左移是x2,右移是/2。这么基本的东西都不明白。

支持(0) 反对(0) 飞鸟_Asuka | 园豆:209 (菜鸟二级) | 2012-10-25 20:18

@飞鸟_Asuka: 

哎,这下丑出大了...明知道是乘除2还打出这么白痴的话,想死的心都有~~¥

支持(0) 反对(0) 向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-25 20:52
0

一个int占四个字节,也就是32位,这样的话1不论左移还是右移32位仍旧移到原来的位置,就仍旧是1了。

飞鸟_Asuka | 园豆:209 (菜鸟二级) | 2012-10-25 20:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册