char 型 127+1后的结果

首先,说下结论,这里由于各种平台的规定不同,对char的默认类型可能不同(unsigned和signed), 所以也有人认为结果不能确定。这里主要要说的是PC上常见的把char默认为signed char的情况,如VS中,运行一遍你会发现结果是-128.

但是8位的signed char型,除去符号位1位,如何表示-128,这里计算机把它拓展成16位,最后再截断取后8位。

-128  原码 1000 0000 1000 0000  
-128  反码 1111 1111 0111 1111  
-128  补码 1111 1111 1000 0000  

从这里可以看出-128的补码,截取8位后为1000 0000,正好是127+1;

同理,可以验证,把-129赋给signed char

-129  原码 1000 0000 1000 0001  
-129  反码 1111 1111 0111 1110  
-129  补码 1111 1111 0111 1111 

截取8位后为0100 0000,所以在程序中打印出来应为127。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值