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

标签 c bitwise-operators

<分区>

Possible Duplicate:
Can I use a binary literal in C or 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;
}

谢谢

最佳答案

您提供的数字是十进制的,而您打算使用二进制。尝试以下操作:

unsigned a = 0x2d; // 101101 b
unsigned b = 0x33; // 110011 b

或者对于 GCC 编译器使用:

unsigned a = 0b101101;
unsigned b = 0b110011;

关于c - 我无法打印按位运算符的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14110764/

相关文章:

c - C 中带有套接字的事件驱动模型

java - 将按位运算Java代码转换为PHP

c# - 从 .All 中按位减法

阐明 GNU C 库如何定义不可重入函数

c - 如何将数组中的字符串分配给字符以获取字符串的长度?

c - 将 posix 信号量数组分配给共享内存

c - malloc 需要 sizeof 运算符吗?

更改字节中的特定位集

sql - 如何在同一个 SQL 表中的两行之间执行按位或运算?

SQL 按位掩码