将-617以八进制数表示答案是(176627)而为什么(-01151)不行呢,这两个的区别是什么?

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 19:02:52

将-617以八进制数表示答案是(176627)而为什么(-01151)不行呢,这两个的区别是什么?
将-617以八进制数表示
答案是(176627)
而为什么(-01151)不行呢,这两个的区别是什么?

将-617以八进制数表示答案是(176627)而为什么(-01151)不行呢,这两个的区别是什么?
你可能是以%o的输出,这种是以无符号的8进制输出,但是你这里是有符号的,所以它把符号位也当做为数值位了
-617的原码为:
10000000 00000000 00000010 01101001
但是任何数在内存中都是以补码的方式存储的,所以在这里我们需要转换
11111111 11111111 11111101 10010110
11111111 11111111 11111101 10010111
所以最后的结果为10进制的4294966679,换为8进制为:
37777776627
这个是在VC下的结果
TC下的int 为2个字节:
所以为
10000010 01101001
11111101 10010110
11111101 10010111
最后为10进制的64919,换为8进制为:176627