A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 赵崇友 于 2013-3-30 16:59 编辑

“如果对char byte或者、short类型的数值进行移位处理,那么在移位进行前,它们会被转换为int类型,并且得到的结果也是int型的值。只有数值右端的低5位才有用。这样可以防止我们移位超过int型值所具有的位数。若对long类型进行处理,最后得到的结果也是long型值,此时只会用到数值右端的低6位。”这句话如何理解啊?低5位和低6位有什么用?

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

6 个回复

倒序浏览
晕死了||居然看不懂
char,byte,short分别是8位,8位,16位。但是我没看懂楼主,你要为何般??java疯狂讲义第二版第三章第七节有详细介绍。
回复 使用道具 举报
似水像火 发表于 2013-3-29 17:40
晕死了||居然看不懂
char,byte,short分别是8位,8位,16位。但是我没看懂楼主,你要为何般??java疯狂讲义 ...

只有数值右端的低5位才有用。这样可以防止我们移位超过int型值所具有的位数
这句的理解
回复 使用道具 举报
int类型是32位也就是2的5次幂
如果你移32位以上,那么原来的数的信息会全部丢失,这样也就没有什么意义了
回复 使用道具 举报
似水像火 发表于 2013-3-29 18:01
int类型是32位也就是2的5次幂
如果你移32位以上,那么原来的数的信息会全部丢失,这样也就没有什么意义了  ...

就是说低5位是右移的位数的二进制位数?
比如:2>>4   4的二进制0000 0000 0000 0000 0000 0000 0000 0100  
那低五位是00100   是这个意思嘛?
如果右移的二进制超过了五位就超出了int型的位数,也就没有意义了!!
不知道我这样理解对嘛!!!
回复 使用道具 举报
要这么理解,加入给你一个整数n,然后执行n<<m,而那个低于五位是对m来说的,因为2的5次方是32,一个数左移32也就没意义了。
至于long型,2的6次方是64,左移64位也没意义了。

int a=11;
System.out.println(Integer.toBinaryString(a));
System.out.println(a);
System.out.println(Integer.toBinaryString(a<<33));
System.out.println(a<<33);

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
似水像火 发表于 2013-3-29 18:11
要这么理解,加入给你一个整数n,然后执行n

哦哦  多谢了  我明白了!!我的移位符写反了!!!原来如此……书上写的有点让人误解。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马