Java 这是怎么回事?x<<=3=-8,其中(字节)x=127?

Java 这是怎么回事?x<<=3=-8,其中(字节)x=127?,java,c,logic,unsigned,Java,C,Logic,Unsigned,我为什么得到这个输出? 字节x; x=127; x这是因为byte是一种使用符号的有符号数据类型。而248-256等于-8这是因为byte是一种使用。而248-256等于-8,因为您使用的是带符号字符,其范围是-128到127。。 有符号字符的最高有效位(MSB)仅限于其有符号字符。。 0表示正,1表示负 如果是肯定的。。 正常计算该值 但是如果是否定的。。 该值为计数[正常值]-[最大值] 例: 129=1000 0001[位] 所以有符号的值=129-256=-127 CMIIW因为您使用的

我为什么得到这个输出?

字节x; x=127;
x这是因为
byte
是一种使用符号的有符号数据类型。而
248-256
等于
-8

这是因为
byte
是一种使用。而
248-256
等于
-8

,因为您使用的是带符号字符,其范围是-128到127。。 有符号字符的最高有效位(MSB)仅限于其有符号字符。。 0表示正,1表示负

如果是肯定的。。 正常计算该值

但是如果是否定的。。 该值为计数[正常值]-[最大值] 例:

129=1000 0001[位]

所以有符号的值=129-256=-127


CMIIW

因为您使用的是有符号字符,其范围是-128到127。。 有符号字符的最高有效位(MSB)仅限于其有符号字符。。 0表示正,1表示负

如果是肯定的。。 正常计算该值

但是如果是否定的。。 该值为计数[正常值]-[最大值] 例:

129=1000 0001[位]

所以有符号的值=129-256=-127


CMIIW

C代码定义不明确-移位产生值1016,如果该值超出
有符号字符的范围,则结果是实现定义的。C代码定义不明确-移位产生值1016,如果这超出了
有符号字符
的范围,那么结果是实现定义的。+1我会写
字节
而不是
字节
(byte)248
=
=
-8
+1我会写
字节
而不是
字节
(byte)248
=
=
-8