一个int型的数据:77与077有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/05/31 19:34:29
我有如下程序:
int a,b ;
a = 077 ;
b = a & 3 ;
printf("\40: The a & b(decimal) is %d \n",b) ;
但是结果是3!
于是我将第二行的a = 077 ;改成了a = 77 ;然后得到的结果是1!
我郁闷了...望高手不惜解惑!

0开头是8进制数, 077 = 8*7+7=63, 其2进制是 111111

3的2进制 编码是 011

2者作“按位与”运算后,结果是 011,所以是3;

而77的二进制是 1001101, 和3(011)作“按位与”运算后, 是 001, 所以是1。

前边加上0就说明是16进制,
即 00000000 00000000 00000111 00000111
&00000000 00000000 00000000 00000011
相与之后为3
而77是十进制
00000000 00000000 00000000 01001101
&00000000 00000000 00000000 00000011
结果为1

077是八进制数而77是十进制数