首页 > 解决方案 > 使用'>>'将int向右移动后如何将最高有效位更改为1?

问题描述

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

标签: javabinarybit-manipulationbitwise-operators

解决方案


你的号码总是 8 位宽吗?如果是这种情况,您可以简单地使用 10000000 的十进制表示,即 128 并按位执行,让我们举个例子

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

推荐阅读