Java 在任何语言中,如何在整数的特定位置翻转位

Java 在任何语言中,如何在整数的特定位置翻转位,java,python,c,Java,Python,C,我有一个整数n,我想在它的二进制表示中翻转它的k第位(从最低位开始)。我怎么做 例如,如果我有n=0b01101和k=2,那么结果是0b01001=9 任何语言都可以。谢谢。要翻转一个或多个位,请使用。在您的情况下,适当的异或掩码是左边的1k位 在Python中: In [58]: 0b01101 ^ (1 << 2) Out[58]: 9 [58]中的:0b01101^(1以下是在C中的实现方式: n ^ (1 << k) n^(1将数字1左移到所需的位数,然后对数

我有一个整数
n
,我想在它的二进制表示中翻转它的
k
第位(从最低位开始)。我怎么做

例如,如果我有
n=0b01101
k=2
,那么结果是
0b01001=9


任何语言都可以。谢谢。

要翻转一个或多个位,请使用。在您的情况下,适当的异或掩码是左边的
1
k

在Python中:

In [58]: 0b01101 ^ (1 << 2)
Out[58]: 9

[58]中的
:0b01101^(1以下是在C中的实现方式:

n ^ (1 << k)

n^(1将数字1左移到所需的位数,然后对数字进行异或运算

JavaScript:

var num = 6, k = 2;
num = num ^ (1 << k);
var num=6,k=2;

num=num^(1在c中,只需执行以下操作即可切换:

n ^= 1 << k;

n^=1或者,当n为整数时,您可以使用
(n>>k)&1查找位置k处的值,而不是使用
pow(2,k)
。这会导致RSHIFT而不是函数调用,对于power操作符
**
也可以这样说,尽管从性能角度看,这并不重要。
num = 0b01101 XOR (0b00001 << 2)
num = 0b01101 XOR 0b00100
num = 0b01001
n ^= 1 << k;
n |= ( 1 << k);
number = pow(2,k)    
if((number & n) != number)
    //this means that it's a 0 at position k
    n |= ( 1 << k);
else
    //this means that it's a 1 at position k
    n &= ( 0 << k);