int a=-1;a=a|0377,printf("%d,%o",a,a):

答案是-1,177777不明白177777是怎么来的~
2025-03-10 20:15:16
推荐回答(2个)
回答1:

你学过汇编吧?知道补吗和反码吧?不的话先去查查这个。
那你应该知道-1在内存中是1111 1111 1111 1111,0377是八进制数,换为2进制是0000 0000 1111 1111,二者作或,结果没变,还是1111 1111 1111 1111,这个数换为无符号八进制数是177777。

正数的补码为该数本身,负数的补码为该数的二进制每一位取反,然后加1.

回答2:

-1的八进制是177777