Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用'将int向右移动后将最高有效位更改为1&燃气轮机&燃气轮机';?_Java_Binary_Bit Manipulation_Bitwise Operators - Fatal编程技术网

Java 如何在使用'将int向右移动后将最高有效位更改为1&燃气轮机&燃气轮机';?

Java 如何在使用'将int向右移动后将最高有效位更改为1&燃气轮机&燃气轮机';?,java,binary,bit-manipulation,bitwise-operators,Java,Binary,Bit Manipulation,Bitwise Operators,例如,当我有一个二进制数字,比如0x54,它将是01010100。使用位运算符“>>”后,此数字将变为00101010。最重要的位不是0,而是1。我怎样才能做到这一点?您的数字总是8位宽吗?如果是这种情况,您可以简单地使用10000000的十进制表示法,即128,并进行位或运算 让我们以你为例 int val = 84; /// 01010100 int newVal = val >> 1; // 00101010 int mostSig = newVal | 128; // 101

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

您的数字总是8位宽吗?如果是这种情况,您可以简单地使用10000000的十进制表示法,即128,并进行位或运算 让我们以你为例

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

你的数字总是8位宽吗?如果是这种情况,您可以简单地使用10000000的十进制表示法,即128,并进行位或运算 让我们以你为例

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

您还知道哪些其他二进制运算符?请注意,
>
需要两个操作数。在您的示例中,您显然编写了
0x54>>1
。你会一直写
>1
,还是有时会换一个以上的档位?如果是后者,那么——在这种情况下需要什么行为?同样,在您的示例中,您显示了8位。假设您使用的是
字节
类型,因此最高有效位始终是0x80处的位,这公平吗?
(x>>1)|(1@BeauVansiclen:re:“由32位组成的长”:但您将此问题标记为[java],在java中
始终是64位。(其32位对应项是
int
)您还知道哪些其他二进制运算符?请注意,
>
需要两个操作数。在您的示例中,您显然编写了
0x54>>1
。您会一直编写
>1
,还是有时会移位多个操作数?如果是后者,那么--在这种情况下需要什么行为?此外,在您的示例中显示了八位。假设您使用的是
字节
类型,因此最高有效位始终是0x80处的位,这公平吗?
(x>>1)|(1@BeauVansiclen:re:“由32位组成的长”:但您将此问题标记为[java],在java中
始终是64位。(其32位对应项是
int
)这个问题表示移动一个int,但是如果它是一个长值,那么它或多或少是相同的方法。
long maxLongVal=1L>1;long mostSig=newVal | maxLongVal;//100000…..0101010
这个问题表示移动一个int,但是如果它是一个长值,那么它或多或少是相同的方法。
long maxLongVal=1L>1;long mostSig=newVal | maxLongVal;//100000…..0101010