【发布时间】:2020-02-20 13:53:50
【问题描述】:
为什么当我尝试为 110101002 移位时,结果是 1101010002,而不是 101010002。
int a = Integer.parseInt("11010100", 2) << 1;
我尝试这样做:
int a = (byte)(Integer.parseInt("11010100", 2) << 1);
但如果输出值大于 128,则一切都变为负数,这是合乎逻辑的。 我怎样才能使那个位数不改变?
【问题讨论】:
-
整数运算总是在
ints 或longs 上完成。 -
您使用的是整数,它们是 32 位长。为什么你会期望结果被截断为 8 位?
-
byte a = ... 会修复它。