如何获取给定十进制数的第n位?

问题描述 投票:0回答:1

我正在尝试获取给定数字的第n位(从数字的二进制表示形式的end开始(从0开始)。

例如,假设我们有十进制数 7,想要获取第 0 位。所以 7 在二进制中是 111,第 0 位是 1

假设我们有 9,即二进制的 1001,并且想要获取第二位。是0

我脑子里有以下想法:所以对于第一个例子,我们取 111 & 001 = 001,其中不是零,所以答案是 1。

对于第二个例子,我们取 1001 & 0100 = 0000,零,所以答案是 0。

所以基本上我们对数字和一个全零但在我们感兴趣的位置为 1 的数字进行 bitwise and

这个想法可以用C++代码高效实现吗?我不知道如何用代码写出除了我们感兴趣的位置之外全为零的数字。谢谢!

c++ binary bit-manipulation bitwise-operators
1个回答
0
投票

答案是:

int get_bit_n(int x, int n) {
    return (x >> n) & 1;
}
© www.soinside.com 2019 - 2024. All rights reserved.