黑马程序员技术交流社区

标题: 为什么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