八进制转化成十进制为什么是37777777777
int类型是4个字节,也就是有4个8位,如1的存储为:0000 0000 0000 0000 0000 0000 0000 0001
负数的存储是最高位为1,其余位为其正数(不含最高位)的二进制补码加1。
-1就是(下面都是4位一块,共8个块,我省略为4个块):
-1的正数1:
0000 0000 ... 0000 0001
补码:
0111 1111 ... 1111 1110
加1:
0111 1111 ... 1111 1111
最高位为1:
1111 1111 1111 1111 1111 1111 1111 1111
十六进制肯定是8个F没问题。
八进制就是从右边开始3位一组,转换成十进制数字,最高位不够3位补0:
011 111 111 111 111 111 111 111 111 111 111
3 7 7 7 7 7 7 7 7 7 7
楼主你看看答案是不是10个7呢?
如果是16位编译器,就是
001 111 111 111 111 111
1 7 7 7 7 7