最通俗易懂:负数的二进制为什么要用补码的形式

您所在的位置:网站首页 为什么补码能表示-128 最通俗易懂:负数的二进制为什么要用补码的形式

最通俗易懂:负数的二进制为什么要用补码的形式

2024-07-17 16:27:53| 来源: 网络整理| 查看: 265

负数的二进制使用码补的形式,即:原码的二进制取反加1。

我们假设使用byte类型,则数据只有8个比特位,负6的二进制形式分3步形成,如下: 在这里插入图片描述 取反就是把0变成1,把1变成0。

所以负6的二进制形式为:1111 1010

有时候我就在想,为什么负数的二进制形式要这么麻烦,比如负6,不能像下面这样子表示吗:

在这里插入图片描述 如上图,最高位的1表示负数,低7位的000 0110表示6,合起来就是负6,这样不是更简单更容易理解吗?

后来,我不经意间发现了一个规律,才明白了负数的二进制形式为什么要用补码的形式。

我们知道1个字节是8个比特位,如果表示无符号数的话,则能表示0 ~ 255,共256个数字,如果是表示有符号数的话,则能表示-128 ~ 127,也是共256个数字。比特位的最高位表示负数,其它位就表示具体的数值,-128是最小的,所以1000 0000这个二进制就表示-128,最高位的1表示是负数,后面的7个0是最小值,就用来表示最小数值-128,这是比较容易理解的。-127比-128大1(-127 > -128),所以-127的二进制形式就比-128多一个1,-127二进制为1000 0001,对应的-126又比-127大1,所以-126为1000 0010。下面多举例几个负数的二进制,如下:

在这里插入图片描述

这几个数值的大小关系为:-128 < -127 < -126 < -125 < -124 < -123 < -122 < -121

通过这个图就能很容易的理解负数的二进制为什么要用补码形式了,因为最高位是表示符号位的,剩余的7位表示数值的大小,-128是最小值,则最高位为1表示负数,低7位只能用最小的000 0000来表示了,-127比-128大1,则-127的低7比-128的低7位就要大1,为000 0001,-126比-127大1,则低7位为000 0010。这样的表示方式就和正数一样了,二进制数值位越大,表示的结果就越大!这样在进行加减法运算时处理就是一样的。

如果要按我们以前的简单理解的话,-128的二进制应该是这样的: 在这里插入图片描述

如上图,最高位1表示负数,剩余的位表示具体数值,则-128一共需要9个比特位。而byte类型只有8个比特位,8个位表示有符号的整数范围是-128 ~ 127,正好256个数字,如果用我们自己的简单理解的话,8个比特位是表示不了-128的,但是可以表示-127,如下: 在这里插入图片描述

如上图,如果按我们的简单理解的话,byte能表示的最小的数为-127,除了符号位,剩下的低7位可以表示 0 ~ 127,共128个数字,如果表示正数,就代表0 ~ 127,共128个数字,如果表示负数,就代表 -0 ~ -127,也是128个数字,但是这里就有问题了,-0的二进制为1000 0000,这是-0的二进制,但是现实中是没有-0的,只有0,0二进制为0000 0000,所以1000 0000要表示一个什么数值呢?我们只道它高位是1,肯定只能表示负数了,它不能表示比-1还要大的负数了,则只能用来表示比-127还小的负数,即-128,然后再配合低7位数值越大,表示的结果就越大,所以1000 0001就表示-127了,因为它比-128大1。然后再来回顾之前的负数二进制列表: 在这里插入图片描述 基于这个规律,才有的负数的二进制形式使用补码形式,这个补码形式是怎么推导出来的我就懒得去想了,反正上面的负数,你用补码形式去推导的话是正好和上面的值相等的,比如-128,推导如下: 在这里插入图片描述

所以1000 0000是-128的二进制形式。

再比如-127,推导如下: 在这里插入图片描述 所以1000 0001是-127的二进制形式。

总结一下:

二进制位分符号位和数值位数值位中的数值越大,表示的结果就越大。 以byte为例,如果表示负数,则最高位为1,低7位为数值位。 如果低7位是000 0000,是最小值,则表示最小的负数:-128如果低7位是111 1111,是最大值,则表示最大的负数:-1,-1 > -128,-1是最大的负整数。这样的表示方式就和正数相同了,即数值位中的数值越大,表示的结果就越大,这也方便我们推导出一些负数的值,比如我们知道-1的二进制为“1111 1111”,如果我们知道了-1的二进制,则很容易推出-2的二进制,因为-2比-1小1,所以负二的数值位对应的要小1,即-2为:1111 1110,-3,则再小1为:1111 1101,所以只要你知道任意一个负数的二进制,你就可以很轻松的推出这个负数相邻的一些负数。 负数使用补码的好处: 可以避免出现-0(负零)的情况可以把减法变为加法运算,所以在计算机中的减法也是使用加法来实现计算的。

关于补码的更多描述也可以参考百度百科:https://baike.baidu.com/item/%E8%A1%A5%E7%A0%81/6854613

补充(2022年03月03日),关于在计算机中是如何用加法来实现减法计算的分析:

负数使用补码形式的一个很大的原因是:使用了补码之后,在计算机的计算中,就没有减法了,用加法运算也能实现减法运算的结果,所以在计算机中只有加法器,没有减法器,减法也是使用加法器来计算的,举例如下:

127 - 128 = -1

这是一个减法运算,“127减128” 可以变为 “127 加负128” ,这样就变成了一个加法运算了,如下:

127 + (-128) = -1

二进制的加法运算如下: 在这里插入图片描述 又比如:1 - 2 = -1,可换算为:1 + (-2) = -1,二进制的计算步骤如下: 在这里插入图片描述

再来一个简单:1 - 1 = 0,可换算为:1 + (-1) = 0,计算过程如下: 在这里插入图片描述 因为byte只有8个比特位,所以上面相加结果的最高位的1其实是会被直接丢掉的,则结果为0000 0000,即结果为0。

再来看2 - 1 = 1,可换算为:2 + (-1) = 1,计算过程如下: 在这里插入图片描述 如上图,去掉多余的最高位,结果为:0000 0001,即结果为1。

OK,这里就不再举例了,大家可以找自己喜欢的减法代进来进行实验,这样我们就深刻理解了负数使用补码的好处了:即用加法来代替减法。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭