-4321>>>30在java中的运行结果为什么是3?(byte)a+(((byte)a)&0xFF)的运行结果为什么是254?
-4321>>>30在java中的运行结果为什么是3?(byte)a+(((byte)a)&0xFF)的运行结果为什么是254?以上结果请用机器...
-4321>>>30在java中的运行结果为什么是3?(byte)a+(((byte)a)&0xFF)的运行结果为什么是254?以上结果请用机器数的计算说明!
展开
1个回答
展开全部
第一个问题:
>>>运算符是逻辑右移 高位补0
-4321的2进制表示是11111111111111111110111100011111 使用逻辑右移30位就是
(前面全是0)11 这个就是10进制的3啦
第二个问题:
你说的 a 是指 'a' 吗?? 如果是指'a'那么算出来 不是254啊, 具体是这样的。byte 'a'是十进制的97 那么 byte 'a'+byte 'a'=194 , 然后 &0xFF 其实就是取194在二进制时的最低8位 那么就是 194。 +的优先级是大于 & 的
>>>运算符是逻辑右移 高位补0
-4321的2进制表示是11111111111111111110111100011111 使用逻辑右移30位就是
(前面全是0)11 这个就是10进制的3啦
第二个问题:
你说的 a 是指 'a' 吗?? 如果是指'a'那么算出来 不是254啊, 具体是这样的。byte 'a'是十进制的97 那么 byte 'a'+byte 'a'=194 , 然后 &0xFF 其实就是取194在二进制时的最低8位 那么就是 194。 +的优先级是大于 & 的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询