C 语言的 | 的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 12:53:36
题目:学习使用按位或 | 。
1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1
2.程序源代码:
#include "stdio.h"
main()
{
int a,b;
a=077;
b=a|3;
printf("\40: The a & b(decimal) is %d \n",b);
b|=7;
printf("\40: The a & b(decimal) is %d \n",b);
}
该程序的结果是63,63
可我不知道其中的计算是怎么完成的,
怎么会是63呢,
是怎么得来的?

a=077;0开头,所以是八进制数,翻译成二进制就是0111111;十进制是63;
b=a|3;其中3翻译成二进制就是11;如此,做运算a|3:
0111111 (077,也就是十进制63)
0000011 (3)
0111111 (结果就是这样的,八进制077,十进制63)
因此第一次输出为63;
然后7就是111;做运算b|=7也就是b=b|7:
0111111 (b,也就是十进制63)
0000111 (7)
0111111(结果,也就是十进制63)
因此第二次输出为63。

a=077;/*0开头 所以是八进制 77 十进制 的 63, 二进制的 111111*/
b=a|3;/*b=十进制 的 63, 二进制的 111111*/
b|=7;/*b=十进制 的 63, 二进制的 111111*/

最后按十进制输出
所以显示结果是 63