Java 这是怎么回事?x<<=3=-8,其中(字节)x=127?
我为什么得到这个输出? 字节x; 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这是因为
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
CMIIWC代码定义不明确-移位产生值1016,如果该值超出
有符号字符的范围,则结果是实现定义的。C代码定义不明确-移位产生值1016,如果这超出了有符号字符的范围,那么结果是实现定义的。+1我会写字节而不是字节和(byte)248
==-8
+1我会写字节而不是字节和(byte)248
==-8