为什么11010100 << 1等于110101000,而不是10101000

问题描述 投票:7回答:3

为什么当我尝试移位11010100 2]的位时结果是110101000 2,而不是10101000 2

int a = Integer.parseInt("11010100", 2) << 1;

我尝试这样做:

int a = (byte)(Integer.parseInt("11010100", 2) << 1);

但是,如果输出值大于128,那么一切都会变成负号,这是合乎逻辑的。如何使位数不变?

为什么当我尝试移位110101002的位时,结果是1101010002,而不是101010002。int a = Integer.parseInt(“ 11010100”,2)<< 1;我尝试这样做:int a =(byte)(Integer.parseInt(“ 11010100”,...

java bit-shift
3个回答
13
投票

让我们一次迈出一步。


8
投票

如果要将所有高出低8位的位都设置为0,则可以按位与:


3
投票

尝试这样的事情:

© www.soinside.com 2019 - 2024. All rights reserved.