整形提升(源码 反码 补码)

32平台机器      

2进制

-128      原码:1000 0000 0000 0000 0000 0000 1000 0000

             反码:1111  1111  1111  1111 1111  1111  0111  1111

             补码:1111  1111  1111  1111 1111   1111 1000 0000

char(类型)   存 1000 0000

%u  时   先整形提升 1111  1111  1111  1111 1111   1111 1000 0000  因为无符号(%u)直接输出1111  1111  1111  1111 1111   1111 1000 0000


 -1        原码:1000 0000 0000 0000 0000 0000 0000 0001

             反码:1111  1111  1111  1111 1111  1111  1111 1110

             补码:1111  1111  1111  1111 1111   1111  1111 1111

char(类型)存储  1111 1111     

%d    先整形提升1111  1111  1111  1111 1111   1111  1111 1111(补码)

找到源码(1000 0000 0000 0000 0000 0000 0000 0001)再输出

char a = -1;  signed char b = -1;相同   所以都输出-1

unsigned char c = -1;

            原码:1000 0000 0000 0000 0000 0000 0000 0001

             反码:1111  1111  1111  1111 1111  1111  1111 1110

             补码:1111  1111  1111  1111 1111   1111  1111 1111

char(类型)存储  1111 1111 

无符号数整形提升:左边直接补零

整形提升为

                 0000 0000 0000 0000 0000 0000 1111 1111

正数源码 反码 补码相同所以输出0000 0000 0000 0000 0000 0000 1111 1111就是255

 

有符合char类型取值范围为-128到127(包括-128  和127)

而127再加1就是-128

因为

0000 0000 0000 0000 0000 0000 1000 0000(128)正数源码 反码 补码相同

char(类型)中存的是1000 0000

先整形提升 1111  1111  1111  1111 1111   1111 1000 0000  因为无符号(%u)直接输出1111  1111  1111  1111 1111   1111 1000 0000

而1111  1111  1111  1111 1111   1111 1000 0000 是-128的反码

(-128 源码 反码 补码  前面有写)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昨天;明天。今天。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值