为什么我得到这个输出?
字节 x ; x = 127; x<<=3;//同 x = x <<3 println(x)
输出:-8
当我在纸上记下它并旋转我得到的位时 - 11111000 那就是= 248?
我想字节占用1个字节(8位)。不知道它是有符号的还是无符号的?我假设它是有符号的?
因为下面给出的 C 代码也给了我-8:
有符号字符 x = 127; x<<=3; printf("x = %d \n " , x);
为什么-8??rgd软
这是因为它是一个使用二进制补码byte
的有符号数据类型。并且等于。248-256
-8
因为您使用的是有符号字符,其范围是 -128 到 127。有符号字符的最高有效位 (MSB) 仅限于其有符号字符。0 表示正数,1 表示负数。
如果为正.. 该值正常计数。
但如果是负数.. 值为 count [normal_value] - [max_value] 例如:
129 = 1000 0001 [位]
所以签名的值 = 129 - 256 = -127
CMIIW