gpt4 book ai didi

java - 使用位运算符比较两个整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:34 24 4
gpt4 key购买 nike

我需要使用位运算符比较两个整数。我遇到了一个问题,我必须在不使用比较运算符的情况下比较两个整数。使用位运算符会有所帮助。但是如何呢?

让我们说一 = 4;b = 5;

我们必须证明 a 不等于 b。但是,我想进一步扩展它,比如说,我们将展示哪个更大。这里 b 更大..

最佳答案

您至少需要与 0 进行比较,理论上这是 CPU 进行比较的方式。例如

等于可以建模为 ^因为位必须相同才能返回 0

(a ^ b) == 0

如果这是 C你可以删除 == 0因为这可以暗示

!(a ^ b)

但是在 Java 中你不能转换 intboolean至少没有一些比较。

为了进行比较,您通常会做一个减法,尽管它会处理溢出。

(long) a - b > 0 // same as a > b

减法与加负数相同,负数与 ~x+1 相同,所以你可以这样做

(long) a + ~ (long) b + 1 > 0

删除 +1你可以把它改成

(long) a + ~ (long) b >= 0 // same as a > b

你可以实现 +作为 >> 的一系列逐位操作<< & |^但我不会把它强加给你。

关于java - 使用位运算符比较两个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31678344/

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