引用自oracle网站, "byte:字节数据类型是一种8位带符号的二进制补码整数。 它的最小值为-128,最大值为127(包括在内)"。
这里,前两行是有效的,但最后一行不是。
byte b = -128;
byte b1 = 127;
byte b2 = b>>>b1;//illegal
问题1:什么是8位有符号?128的二进制格式为1000 0000,而-128需要一个额外的比特来表示负号,如果所有8个比特都被占用,则会放在哪里。
问题2:对于int类型,存在无符号右移运算符,但是对于字节来说似乎不合法,为什么?在字节的情况下,溢出不能被防止吗?在int的情况下,它可以工作
感谢您的帮助!
byte
的值视为所有 8 位的值之和:-128、64、32、16、8、4、2 和/或 1。 - rgettman-128
被表示为1000 0000
,而127
被表示为0111 1111
。这也意味着-1
被表示为1111 1111
。 - rgettman