我无法打印按位运算符的结果

saa*_*aad 3 c bitwise-operators

可能重复:
我可以在C或C++中使用二进制文字吗?

我无法在C中显示按位运算符的结果.在下面的代码中,a&b应为100001且a | b为111111.但是,打印结果不同.无论有没有itoa,我都试图这样做,但无济于事.为什么程序没有正确打印答案?

#include<stdio.h>
#include<stdlib.h>

int main (int argc, char* argv[]) {

  unsigned a = 101101;
  unsigned b = 110011;

  unsigned c = a&b;
  unsigned d = a|b;

  char s[100];
  char t[100];

  itoa(c,s,2);
  itoa(d,t,2);

  printf("%s\n",s); /* Shouldn't it produce 100001? 
                       Instead I get 11000100010101001*/
  printf("%s\n",t); /* Ought to print 111111.
                       Instead it prints 11010111111111111 */

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

Eli*_*ser 8

您提供的数字是十进制,而您打算使用二进制.请尝试以下方法:

unsigned a = 0x2d; // 101101 b
unsigned b = 0x33; // 110011 b
Run Code Online (Sandbox Code Playgroud)

或者对于GCC编译器使用:

unsigned a = 0b101101;
unsigned b = 0b110011;
Run Code Online (Sandbox Code Playgroud)