以无符号八进制形式输出负数的问题说明

1. 问题描述

问题:以无符号八进制形式输出负数-128:

在这里插入图片描述

2. 解释-从结果出发

得到八进制的结果:

37777777600

八进制转换为二进制:

011 111 111 111 111 111 111 111 110 000 000

二进制以8位为一组:

11111111 11111111 11111111 10000000

这是补码形式,减1转换为反码:

11111111 11111111 11111111 01111111

反码转换为原码:

10000000 00000000 00000000 10000000

这就是-128。

3. 解释-从原因出发

char a = -128的存储只需要一个字节:

10000000

而用%o无符号八进制形式输出,则会将输出的变量解释为4个字节,所以-128的原码如下:

10000000 00000000 00000000 10000000

转换为反码补码如下:

反码:11111111 11111111 11111111 01111111
补码:11111111 11111111 11111111 10000000

补码转换为八进制就是:37777777600

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值