负数10进制转8进制和16进制应该怎么转,我做题时-617转8进制的答案是176627,16进制是fd97,是怎么回事?

来源:百度知道 编辑:UC知道 时间:2024/05/27 04:32:43
还有-111转8是177621,转16进制是ff91,都怎么回事,请各位把详细步骤写下。
请问-111转8进制是不是可以转成177621或-0157,转16进制是不是为FF91或-0x6F两种形式?

-617的补码是将617的二进制码取反后加1,所以是00000010 01101001取反变成11111101 10010110,加1变成11111101 10010111,对应的八进制就是176627,16进制是FD97

同理,-111的二进制码是111的二进制码取反加1,是00000000 01101111,取反是11111111 10010000,加1变成11111111 10010001,对应八进制是177621,16进制是FF91

111 的二进制是0000000001101111
-111就是111求补,即 1111111110010001
转换为8进制就是177621
转换为16进制就是是ff91

#include<iostream>
void main()
{
int b=-111;
cout<<oct<<b<<endl;
getch();
}