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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhengyang 中级黑马   /  2016-6-6 09:01  /  602 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte,short ,char 数据类型进行移位运算符操作的时候,是在byte占的一个字节8个比特位里面操作吗?
byte b = 5;
b << 8;

6 个回复

倒序浏览
超出范围了吧
回复 使用道具 举报
按我的理解  b的二进制是00000101   向左移8位就超出范围了 101 0000 0000
回复 使用道具 举报 0 1
只要byte,short ,char 数据类型的数据参与运算,底层会自动先提升为int类型然后参与运算,运算后的结果都是int类型的,所有位移运算时在int的范围内移动,如果要重写赋值给byte,short ,char 数据类型的数据,那么就需要强制类型转换,可能会损失精度,(得到的结果不是你想要的认为的结果)
回复 使用道具 举报
会转换为int类型的数据进行运算,而int类型占四个字节32个比特位.如果超出31位(首位为符号位),就会出现错误.
回复 使用道具 举报
会自动截取8位.超出范围的会被忽略的.
回复 使用道具 举报
最后得到的结果是0,因为有效数据位已经被移出去了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马