1

为什么我得到这个输出?

字节 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软

4

2 回答 2

10

这是因为它是一个使用二进制补码byte的有符号数据类型。并且等于。248-256-8

于 2012-05-09T08:57:33.203 回答
0

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

如果为正.. 该值正常计数。

但如果是负数.. 值为 count [normal_value] - [max_value] 例如:

129 = 1000 0001 [位]

所以签名的值 = 129 - 256 = -127

CMIIW

于 2012-05-09T09:14:12.257 回答