【发布时间】:2014-01-22 20:40:21
【问题描述】:
我正在围绕 C 中的位运算符做一个非常微不足道的计算机科学作业,但我遇到了一个问题,我不知道为什么会发生这种情况。这是我正在运行的代码。
#include <stdio.h>
int main(int argc, char *argv[]){
int bitPattern1 = 0x10011001;
int bitPattern2 = 0x01100110;
int bitPattern3 = 0xFFFFFFFF;
int bitPattern4 = 0x00000000;
/* pair 1 */
printf("bitPattern1 & bitPattern2 = %x\n", bitPattern1 & bitPattern2);
printf("bitPattern1 && bitPattern2 = %x\n", bitPattern1 && bitPattern2);
/* pair 2 */
printf("bitPattern1 | bitPattern2 = %x\n", bitPattern1 | bitPattern2);
printf("bitPattern1 || bitPattern2 = %x\n", bitPattern1 || bitPattern2);
/* pair 3 */
printf("bitPattern1 & bitPattern3 = %x\n", bitPattern1 & bitPattern3);
printf("bitPattern1 && bitPattern3 = %x\n", bitPattern1 && bitPattern3);
/* pair 4 */
printf("bitPattern1 | bitPattern3 = %x\n", bitPattern1 | bitPattern3);
printf("bitPattern1 || bitPattern3 = %x\n", bitPattern1 || bitPattern3);
/* pair 5 */
printf("bitPattern2 & bitPattern4 = %x\n", bitPattern2 & bitPattern4);
printf("bitPattern2 && bitPattern4 = %x\n", bitPattern2 && bitPattern4);
/* pair 6 */
printf("bitPattern2 | bitPattern4 = %x\n", bitPattern2 | bitPattern4);
printf("bitPattern2 || bitPattern4 = %x\n", bitPattern2 || bitPattern4);
return 0;
}
问题发生在第 4 对的第一部分,它返回以下结果:
bitPattern1 | bitPattern3 = ffffffff
bitPattern1 || bitPattern3 = 1
为什么按位运算符返回“f”我查看了文档,虽然 OR 运算符返回 1 或零,但该示例似乎应该返回“11111111”。它与十六进制数字有关吗?我在谷歌上找不到任何东西。
【问题讨论】:
-
这个问题似乎离题了,因为它对初等数学缺乏最基本的理解。
-
1111二进制 ==F十六进制
标签: c bitwise-or