访问char c ++中的各个位

时间:2012-03-02 09:56:44

标签: c++ bit

我如何访问c ++类型中的各个位,char或任何c ++其他类型。例如。

4 个答案:

答案 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 ++中的数字