数值的补码表示也分两种情况:
(1)正数的补码:与原码相同。
例如,+9的补码是00001001。
(2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。
例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码0000111按位取反为1111000;再加1,所以-7的补码是11111001。
计算机为什么要用补码存储整型
这得从二进制的原码说起:
如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767
最小为1111111111111111=-2的15次方减1=-32767
此时0有两种表示方法,即正0和负0:0000000000000000=1000000000000000=0
所以,二进制原码表示时,范围是-32767~-0和0~32767,因为有两个零的存在,所以不同的数值个数一共只有2的16次方减1个,比16位二进制能够提供的2的16次方个编码少1个。
但是计算机中采用二进制补码存储数据,即正数编码不变,从0000000000000000到0111111111111111依旧表示0到32767,而负数需要把除符号位以后的部分取反加1,即-32767的补码为1000000000000001。
到此,再来看原码的正0和负0:0000000000000000和1000000000000000,补码表示中,前者的补码还是0000000000000000,后者经过非符号位取反加1后,同样变成了0000000000000000,也就是正0和负0在补码系统中的编码是一样的。但是,我们知道,16位二进制数可以表示2的16次方个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是1000000000000000,因为任何一个原码都不可能在转成补码时变成1000000000000000。所以,人为规定1000000000000000这个补码编码为-32768。
所以,补码系统中,范围是-23768~32767。
因此,实际上,二进制的最小数确实是1111111111111111,只是二进制补码的最小值才是1000000000000000,而补码的1111111111111111是二进制值的-1。
整型的宽度是一个字,也就是2个字节,16个二进制位,最高一位二进制位用来表示符号(正或负),那么剩下的15位来表示数值。
所以,有:
01111111 11111111是32767,最大的正整数
00000000 00000001是1
00000000 00000000是0
11111111 11111111是-1(不是-32767)
10000000 00000001是-32767(不是-1)
10000000 00000000是-32768(不是-0),最小的负整数
-32768在内存中的表示是10000000,00000000。过程是:先读入正值32768(10000000,00000000),再取反(01111111,11111111),再加1(10000000,00000000)
计算机表示数主要从运算方式的一致性来考虑。
比如00000000 00000001表示1很好理解,但是11111111 11111111为什么是-1呢?
按照二进制加法
11111111 11111111 + 00000000 00000001= 1 00000000 00000000
结果超出了整型的宽度,溢出部分被忽略,最后的计算机结果是00000000 00000000
那么换成十进制,?+1=0,所以11111111 11111111表示成十进制就是-1
分享到:
相关推荐
计算机组成原理-定点补码阵列乘法器(3x3)实验报告 (2).pdf计算机组成原理-定点补码阵列乘法器(3x3)实验报告 (2).pdf计算机组成原理-定点补码阵列乘法器(3x3)实验报告 (2).pdf计算机组成原理-定点补码阵列乘法器(3x3)...
计算机组成原理实验报告-八位补码加减法器的设计与实现.pdf计算机组成原理实验报告-八位补码加减法器的设计与实现.pdf计算机组成原理实验报告-八位补码加减法器的设计与实现.pdf计算机组成原理实验报告-八位补码加减...
计算机组成原理-定点补码阵列乘法器实验报告.pdf计算机组成原理-定点补码阵列乘法器实验报告.pdf计算机组成原理-定点补码阵列乘法器实验报告.pdf计算机组成原理-定点补码阵列乘法器实验报告.pdf计算机组成原理-定点...
计算机补码运算公式-计算机中的补码.pdf
c++ 计算机底层 原码反码补码的练习题,包括答案
计算机组成原理讲义 包括试题与PPT 指令系统 运算器 储存系统 CPU与微程序系统 I-O接口 并附有补码除法规则-------------------------------------------------------------------------------------------
学习如何计算补码,补码的转换等,掌握补码功能
计算机组成原理实验报告-八位补码加减法器的设计与实现.docx计算机组成原理实验报告-八位补码加减法器的设计与实现.docx计算机组成原理实验报告-八位补码加减法器的设计与实现.docx计算机组成原理实验报告-八位补码...
计算机 补码运算 详解 详细论述补码的运算原理,不仅仅是运算方法 强烈推荐
0 000000000000000000000000 00000000 0 绝对值最大数 99.9999 111111111100011101000010 11110011 6 说明:本实验对计算机内存数据的存放拟定为: 整数用两个字节存储,并负数只考虑原码; 实数用4个字节存储,其中...
计算机组成原理原码补码运算 计算机组成原理,原码补码
二进制-原码-补码-反码.pdf
为什么需要反码和补码 反码 o在计算机的时候,只有加法器没有减法器,为了将减法转换为加法,设计反码; o但是反码有缺陷,正负相加 0 的表示不唯一; 补码 o为了解决反码正负相加不唯一的情况,使用高位溢出解决;
计算机组成原理之原补码的乘法运算
c++实现的补码运算,简单而且短小的程序
计算机组成原理之原补码的除法运算
计算机组成原理-定点补码阵列乘法器(33)实验报告.doc
计算机组成原理-定点补码阵列乘法器(3x3)实验报告.pdf
计算机原码,反码,补码.pdf