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

2022-09-02 02:58:02

我有一个整数,我想翻转它的th位(从最低的)在其二进制表示中。我该怎么做?nk

例如,如果我有 和 ,则结果为n=0b01101k=20b01001=9

任何语言都可以。谢谢。


答案 1

要翻转一个或多个位,请使用二进制异或。在您的情况下,相应的XOR掩模向左移动位。1k

在Python中:

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

表达式:

n ^ (1 << k)

在 C、Java、Python 和其他一些语言中有效(前提是变量已正确定义)。


答案 2

将数字 1 左移到所需的位数,然后对数字进行 XOR。

JavaScript:

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

发生了什么事情:

num = 0b01101 XOR (0b00001 << 2)
num = 0b01101 XOR 0b00100
num = 0b01001