黑马程序员技术交流社区

标题: 移位运算符 [打印本页]

作者: zhengyang    时间: 2016-6-6 09:01
标题: 移位运算符
byte,short ,char 数据类型进行移位运算符操作的时候,是在byte占的一个字节8个比特位里面操作吗?
byte b = 5;
b << 8;

作者: 08期javaee-zmz    时间: 2016-6-6 09:06
超出范围了吧
作者: 车前子008    时间: 2016-6-6 09:11
按我的理解  b的二进制是00000101   向左移8位就超出范围了 101 0000 0000
作者: zhengyang    时间: 2016-7-1 12:08
只要byte,short ,char 数据类型的数据参与运算,底层会自动先提升为int类型然后参与运算,运算后的结果都是int类型的,所有位移运算时在int的范围内移动,如果要重写赋值给byte,short ,char 数据类型的数据,那么就需要强制类型转换,可能会损失精度,(得到的结果不是你想要的认为的结果)
作者: chenglong25    时间: 2016-7-1 12:42
会转换为int类型的数据进行运算,而int类型占四个字节32个比特位.如果超出31位(首位为符号位),就会出现错误.
作者: tuijun101112    时间: 2016-7-1 19:58
会自动截取8位.超出范围的会被忽略的.
作者: feng19900123    时间: 2016-7-1 23:34
最后得到的结果是0,因为有效数据位已经被移出去了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2