char类型的范围是-128 ~ +127

在这里插入图片描述在这里插入图片描述
参考:https://blog.csdn.net/qzl1221/article/details/78040590/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

既然-127 0 127都有相应的原码与其对应,那么1000 0000 表示什么呢,当然是-128了,为什么是-128呢,网上有人说-0即1000 0000 与128的补码相同,所以用1000 0000表示-128,,这我实在是不敢苟同,或者说-128没有原码,只有补码1000 0000,胡扯,既然没有原码何来补码,还有说-128的原码与-0(1000
0000)的原码相同,所以可以用1000 0000表示-128,我只能说,回答的不要那么牵强, 原码1000 0000 与-128的原码实际上是不同的, 但为什么能用它表示-128进行运算,如果不要限制为char 型(即不要限定是8位),再来看,-128的原码:1 1000 0000 ,9位,最高位符号位,再算它的反码:1
0111 1111,进而,补码为: 1 1000 0000,这是-128的补码,发现和原码一样, 1 1000 0000和1000 0000 相同?如果说一样的人真是瞎了眼了,所以,-128的原码和-0(1000 000)的原码是不同的,但是在char 型中,是可以用1000 000 表示-128的,关键在于char 是8位,它把-128的最高位符号位1 丢弃了,截断后-128的原码为1000
000 和-0的原码相同,也就是说

1000 0000 和-128丢弃最高位后余下的8位相同,所以才可以用-0 表示-128,这样,当初剩余的-0(1000 0000),被拿来表示截断后的-128,因为即使截断后的-128和char 型范围的其他数(-127~127)运算也不会影响结果, 所以才敢这么表示-128。

这里把疑惑解决了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值