我如何访问c ++类型中的各个位,char
或任何c ++其他类型。例如。
答案 0 :(得分:45)
如果您想要访问位N
:
获取:(INPUT >> N) & 1;
设置:INPUT |= 1 << N;
取消设置:INPUT &= ~(1 << N);
切换:INPUT ^= 1 << N;
答案 1 :(得分:3)
您可以使用二元运算符|
(或),&
(和)和^
(xor)来设置它们。要设置变量a
的第三位,您可以键入,例如:
a = a | 0x4
// c++ 14
a = a | 0b0100
请注意,4的二进制表示是0100
答案 2 :(得分:1)
这很容易 假设您需要访问整数的各个位 像这样创建一个面具 int mask = 1; 现在,用这个掩码和你的数字给出在第0位设置的值 为了访问在第i个位置设置的位(索引从零开始),只需和(掩码&lt;
答案 3 :(得分:1)
如果要查看数字的第n位,可以使用:number&(1<<n)
。
基本上,(1<<n)
(基本上是2^n(because you shift the 1 bit in ...0001 n times, each left shift means multiply by 2)
)创建的数字恰好在0
处,但1
在第n个位置(这是数学原理)。
然后,您用&
number
这将返回一个无处不在的0
或某个地方有一个1
的数字(本质上是一个为0或不为0的整数)。
示例:
2nd
位4位用户,4&(1<<2)
0100
& 0010
____
0000 = 0
因此,4中的2nd
位为0
它也可以与字符一起使用,因为它们也是C,C ++中的数字