为什么 byte的表数范围是 -128 ~ 127?(详尽解析)

问题: 为什么 byte的表数范围是 -128 ~ 127

  • 答:首先需要引入一些基础概念:
    在计算机要想表示一个数字或字符,必须要对数字或字符进行编码,才能写入到计算机的内存或者磁盘中去。因为计算机,只能识别0,1。

举个例子: 存18这个数到磁盘或内存中去,需要经历以下过程。
18 -> 转化为2进制原码 0001 0010
->取反码不变->取补码不变
->最终以0001 0010 存在于计算机中。
计算时也是以这种形式计算。

下面来介绍原码,反码,补码三个概念。

  • 原码:直接将一个数值换成二进制数。最高位是符号位(0为正,1为负)。

  • 反码:中间格式用于计算补码。 正数不变,负数,最高位不变,其他位0置1,1置0。

  • 补码;计算机的数据都是以补码形式进行计算的(规定)。

  • 计算时,计算机会将原码转化为补码后进行计算。规则:正数不变,负数,高位不变在反码的基础上加1。

  • 总结正数 原码、反码、补码相同。 负数,高位都不变,反码0置1,1置0,补码在反码基础上加1。

  • 举个栗子
    -18
    原码 1001 0010 (最高位1为符号位表示负号)
    反码 1110 1101
    补码 1110 1110


解题:

  • byte有八位 可以表示 2^8个数。
  • 因为是计算机语言,所以要将原码转化为补码表示。

1)正数的范围
正数:原码补码一致不做计算。
以下为正数补码(一共128个,表数范围0到127)

补码数值说明
0 111 1111127正数最大(高位0表示正号)
中间数据
0 000 00000正数最小 (将0也归算到正数中去)

2)负数的范围
负数原码:

原码数值说明
1 000 0001 -1负数最大(高位1表示负号)
中间数据
1 111 1111-127中间值
1 000 0000-128(负数中用-0表示了去表示-128)重点!!!
  • 可以理解为 +0 表示正真的0 ,-0表示 -128

负数反码

反码数值说明
1 111 1110-1
中间数据
1 000 0000-127
1 111 1111-128

负数补码

补码数值说明
1 111 1111-1
中间数据
1 000 0001-127
1 000 0000-128
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值