gpt4 book ai didi

java - java如何处理按位运算符的结果

转载 作者:行者123 更新时间:2023-11-29 08:28:52 25 4
gpt4 key购买 nike

我想知道 java 如何找到按位运算的结果是 -ve 还是 +ve?

int x=-5;
int y=8;
System.out.println(x&y); //8
System.out.println(x|y); //-5

x->1 0 1 1 (2's complement)
y->1 0 0 0
x & y -> 1 0 0 0 ->8
x | y -> 1 0 1 1 ->-5(2's complement)

java 如何知道 1 0 1 1 是 -5 ?

为什么不直接把 o/p 写成 1 0 1 1 的十进制等值 11 呢?

它是否对每个结果应用 2 的补码?

我看过汇编代码。 IAND和IOR指令。

最佳答案

您正在对 32 位整数运行按位运算符。所以,数字“8”前面确实有很多零,而“-5”前面有很多:

8  -> 0...01000
-5 -> 1...11011

因此,Java 不需要“知道”有关位操作的结果或操作数的任何信息。 “8”是一个以 0 开头的 32 位数字,因此它是正数。 “-5”是一个以“1”开头的 32 位数字,所以它是负数。

所以,你的问题的答案

Does it apply 2's complement on every result ?

是:是的,因为在 Java 中所有整数都是有符号数,使用 2 的补码。

关于java - java如何处理按位运算符的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50018865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com