【发布时间】:2018-06-23 22:31:20
【问题描述】:
给定一个数字,我想切换数字“n”的位
例如,如果 n = 6 -> 0110
我想得到,结果 = 9 -> 1001
切换,即
在二进制表示中将 1 转换为 0 并将 0 转换为 1
如何在 Java 中以编程方式执行此操作,方法是将 num 与 1 进行异或
感谢大家的回答,所以这取决于我要切换多少位
例如,如果它是 8 位,那么 0xff
如果它的整个 32 位那么 oxffffffff
一种方式是n ^ ~0
【问题讨论】:
-
@OldCurmudgeon 这很明显不是逻辑排他运算符。你能找到一个实际重复的问题吗?
-
我举了一个例子,但这也取决于你想要切换多少位。例如,在您的示例中,您将其限制为 4 位。你想使用一个完整的整数吗?
-
@src3369 我同意它不是重复的,也不应该被标记为这样,但是,尽管如此,它的措辞方式,这个问题太微不足道了。这类似于“我知道加号 (+) 运算符的作用,但我如何使用它将两个数字相加?”如果你可以改写问题来解释究竟是什么导致了困难,它可能会得到更有意义的答案。
-
也许你想要补码:
~6 == 0b111...111001== -6-1 == -7`。
标签: java bit-manipulation