黑马程序员技术交流社区
标题:
为什么int型整数a>>32的结果还是a?
[打印本页]
作者:
夏儒日
时间:
2012-7-2 13:26
标题:
为什么int型整数a>>32的结果还是a?
各位大侠,对于int型整数的移位运算,为什么一个数a>>32位后的结果还是a啊?如果按照移位运算的定义来看,不是应该在空位上补1或者0么?求各位大神指教!不甚感激!!
作者:
邵阳
时间:
2012-7-2 13:34
因为只要是>>32的倍数,都会是原来的数。因为int整型是4个八位,也就是32个二进制,所以移动32的倍数还是原来的数
作者:
赵方明
时间:
2012-7-2 13:41
学 习 了
作者:
杨锦
时间:
2012-7-2 15:14
因为int型是四个字节,一个字节八位,你移位32,肯定还是原来的数啊
作者:
黑马罗坚
时间:
2012-7-2 21:56
a>>b 如果a是int类型的话 那么b就取地5位 那么a>>32 32的低5位为00000 所以是a>>0结果为a a>>-1的话 取-1的低5位 -1的低5位是31 所以结果是a>>31
如果a是long型 a>>b b取低6位 a>>32的低6位还是32 所以结果为a>>32 如果是a>>64 64的低6为是0所以结果为a>>0 等于a a>>-1 -1的低6位是63 所以结果a>>64
结论 int byte char进行位移运算 a>>n; 结果a>>n&0x1f 如果a是long进行位移 a>>n; 结果a>>n & 0x3f;
作者:
~。~
时间:
2012-7-2 22:07
因为int整形数是4个字节共有32位,a>>32移动了32位回到原来的数
作者:
~。~
时间:
2012-7-2 22:07
因为int整形数是4个字节共有32位,a>>32移动了32位回到原来的数
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2