8位byte类型,二进制范围为什么是 -128 ~ 127

一、首先来说一下“ 正数 ”的原码、反码、补码的表示方式

  • 原码的表示方式:
    1、将最高位作为符号位,0为正,1为负。
    2、其他数字位则是数字绝对值的二进制表示方式。
  • 反码、补码 和 原码一样。

正数表示方式,举例数字 127
原码:数字 127,为正数,最高位符号位为0,则表示为0 111 1111。
反码:与原码一样,表示为 0 111 1111
补码:与原码一样,表示为 0 111 1111。

正常写二进制,中间不用加空格,四位一空格是为了容易看,最高位0和后边三位之间的空格也是为了容易看!


二、再来说一下“ 负数 ”的原码、反码、补码的表示方式

  • 原码:负数与正数的原码表示方式,除最高位不一样,负数的最高位符号位是1,其他数字位的表示方式是一样的
  • 反码:负数的反码表示方式是,原码的最高位符号位不变,其他数字位按位取反,即 0变1,1变0。
  • 补码:负数的反码加1。

负数表示方式,举例数字 -127
原码:数字 -127,为负数,最高位符号位为1,则表示为1 111 1111。
反码:按照负数反码的表示方式规则,可得出 -127 的反码表示为 1 000 0000。
补码:按照负数的补码表示方式规则,可得出 -127 的补码表示为 1 000 0001。


这里解答一个遇见过的莫名其妙的疑问
在计算机中,数值一律用 “ 补码 ” 来表示和存储。
所以当问一个数字用二进制怎么表示时,问的是这个数字的补码的表现形式!
也就是说,当问-127用二进制怎么表示,回答的是: 1 000 0001,而不是 1 111 1111。
那为什么问127的二进制表示方式时,回答的是0 111 1111呢?你以为回答的是原码?不!其实回答的就是补码,因为正数的补码和原码长得一样!🙄


最后说一下关于 8位byte类型,二进制范围为什么是 -128 ~ 127
计算机编码领域:计算机最小的存储单位是字节(8位二进制编码数),所以以上的其实都是针对8位byte类型来说的。
1000 0000,为什么不是128,而是 -128呢,这其实是由于8位byte类型中定义了最高位为符号位而决定的,当数字达到127后,再大就没有进位了,所以最大数值被限制在了127。
因此,8位byte类型的范围值就是 -128 ~ 127 了。

16位二进制表示
128:0000 0000 1000 0000
-128:1000 0000 1000 0000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值