gpt4 book ai didi

java - Hackerrank 位翻转挑战

转载 作者:行者123 更新时间:2023-12-02 04:39:06 26 4
gpt4 key购买 nike

大多数人可能熟悉这个问题,但对于那些不熟悉的人来说:

Given 32-bit unsigned integers flip their bits and print the resulting integers.

我希望有人能给我关于如何用 Java 解决这个问题的线索。现在我通常会提供一些我尝试过的代码,但它太困惑了,以至于必须将其删除。我尝试查看社论,其中建议使用按位 ~ 运算符,但没有提供所需的输入。示例输入/输出是

输入:

3 (this is just the number of the integers that we are given)
2147483647
1
0

输出:

2147483648 
4294967294
4294967295

P.S 如有任何帮助,我们将不胜感激。

最佳答案

~ 运算符没有任何问题。它确实翻转了位。您必须了解的是,在 Java 中,int 值始终是有符号

但是由于“无符号”只是位的解释问题,因此您必须像无符号值一样打印它们,例如使用 Java 8:

int[] values={2147483647, 1, 0};
for(int value: values)
System.out.println(Integer.toUnsignedString(~ value));

将打印

2147483648
4294967294
4294967295

如果您无法使用 Java 8,您可以在打印之前将 int 值转换为 long 来解决这个问题:

int[] values={2147483647, 1, 0};
for(int value: values)
System.out.println((~ value) & 0xFFFFFFFFL);

关于java - Hackerrank 位翻转挑战,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30402475/

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