使用'>>'将一个int右移后如何将最高有效位更改为1?

How to change the most significant bit to a 1 after shifting an int to the right using '>>'?

例如,当我有一个数字,例如二进制的 0x54,它是 01010100。在使用按位运算符“>>”之后,这个数字将变成 00101010。而不是最高有效位是 0 ,我需要它是一个。我怎样才能做到这一点?

你的号码总是8位宽吗?如果是这种情况,您可以简单地使用 10000000 的十进制表示形式,即 128,然后按位或 所以让我们以你的例子为例

int val = 84; /// 01010100
int newVal = val >> 1; // 00101010
int mostSig = newVal | 128; // 10101010