精华内容
下载资源
问答
  • 原码表示法在数值前面增加了一符号(即最高为符号):0表示为正数,1表示为负数,其余为数值表示数值大小。纯整数的原码原码的范围是 – (2n–1) ≤ x ≤ 2n–1(n是整数位数)这是如何得到的呢?以机器字长...

    原码、反码、补码的表示范围是如何得到的

    原码

    纯整数的原码

    纯小数的原码

    反码

    纯整数的反码

    纯小数的反码

    补码

    纯整数的补码

    纯小数的补码

    原码

    首先说原码,原码是有符号数中最简单的编码方式。原码表示法在数值前面增加了一位符号位(即最高位为符号位):0表示为正数,1表示为负数,其余为数值位,表示数值大小。

    纯整数的原码

    原码的范围是 – (2n–1) ≤ x ≤ 2n–1(n是整数位数)

    这是如何得到的呢?

    以机器字长为8为例,符号位占1位,那么剩下有7位的数值位,如果不考虑整数的符号,那么这7位数最大的时候为全1,即111 1111,转换为十进制为27–1。

    当符号位为0,即0111 1111,此时该数最大,为27–1;

    当符号位为1,即1111 1111,此时该数最小,为 – (27–1) 。

    即当数值位有n位时(机器字长为n+1位),

    纯整数的原码的范围是 – (2n–1) ≤ x ≤ 2n–1。

    纯小数的原码

    原码的范围是 – (1–2–n) ≤ x ≤ 1–2–n(n是数值位数)

    同样以机器字长为8为例,即有7位的数值位,如果不考虑小数的符合,那么这7位数最大的时候为全1,即0.1111 111,那这该怎么计算?难道要用2-1+2-2+……+2-n吗?如下图所示:1125031261a8a53ffece09cef1ef9520.png即当符号位为0,即0.1111111,此时该数最大,表示为1–2–7;

    当符号位为1时,即1.1111111,此时该数为负数,且为最小负数,表示为 – (1–2–7)。

    即当数值位有n位时(机器字长为n+1位),

    纯小数原码的范围是 – (1–2–n) ≤ x ≤ 1–2–n(n是数值位数)。

    反码

    反码通常用来作为由原码求补码或由补码求原码的中间过渡。

    正数的反码与原码是相同的,而负数的反码是将数值位按位取反,就可以得到。

    纯整数的反码

    以8为机器字长为例,由于正数的反码与补码相同,因此对于最大正数的由来这里不多赘述,同上。那么最小负数如何得来?

    其实与原码也是同一个道理,但是由于负数的反码要按位取反,数值位的全0会变成全1,同样,如果真值的数值位为全1,那么反码表示则会为全0,加上符号位的1,

    即最小负数用原码可表示为1,1111111,反码则表示为1,0000000,即反码可表示的最小负数–(27–1)。

    故当机器字长为n+1时,

    纯整数的反码表示范围是 – (2n–1) ≤ x ≤ 2n–1,与原码是相同的。

    纯小数的反码

    纯小数的反码与上述纯整数的反码是类似的,这里不多赘述,它的表示范围与纯小数的原码是相同的,最关键的就是记住按位取反。

    故纯小数反码的范围是 – (1–2–n) ≤ x ≤ 1–2–n(机器字长为n+1)。

    补码

    由于正数的原码、反码和补码都是相同的,故在这里我们就只讨论负数,而最大值(即最大正数)都是同原码相同的。

    补码是在反码的基础上(按位取反),末尾再加1。

    纯整数的补码

    要正确理解补数,必须要知道补码就是同余。机器字长为8位时,只能表示256个数,但我还想表示一些负数怎么办?就用该负数同余的正数来表示。例如-1=255,-2=254。它的模就是28=256,而负数的补码为模与该负数绝对值的差值,则 – 128 = 256 – 128 = 128,所以–128的补码是10000000。无符号正数从0到255,补码表示的有符号正数从-128到127,其实刚好都是一个相互对应的。

    由此可知,当数值位为n时(机器字长为n+1),

    纯整数的补码的范围是 – 2n ≤ x ≤ 2n–1

    纯小数的补码

    对于小数,补码的最小负数是最让人难以理解的,为什么补码的1.000 0000对应的真值是-1呢?

    如果我们采用对补码取反加一的方法,可以发现结果根本就不是这个值,而结合前面纯小数原码的取值范围,我们发现,在纯小数中,原码和反码都不能表示-1, 他们都只能表示纯整数的-1。从纯小数补码的定义可知,-1.0的补码为2–1.0=1.000 0000。有没有发现这跟上述的纯整数的补码非常相似,只不过纯整数的补码模取的是2n+1,而纯小数补码中,模取的是2,这样我们对于负数的补码就可以清晰的理解了。

    因此,纯小数补码的范围是 – 1 ≤ x ≤ 1–2–n(机器字长为n+1)。

    综上可发现,原码和反码的表示范围是相同的,记住一个,另一个也就记住了,而补码的表示范围中,最大正数是与原码反码相同,但是负数就有区别了。对纯小数来说,补码可表示的最小负数是 – 1;对于纯整数来说,补码可表示的最小负数是 – 2n。

    展开全文
  • 另外,两个用补码表示的数相加时,如果最高(符号)有进位,则进位被舍弃。2、补码与原码的转换过程几乎是相同的。数值补码表示也分两种情况:(1)正数的补码:与原码相同。例如,+9的补码是...

    满意答案

    02ae427d08e371d7e90d5b995e828d6d.png

    gtimraq

    2013.09.17

    02ae427d08e371d7e90d5b995e828d6d.png

    采纳率:57%    等级:11

    已帮助:322人

    计算机系统中,数值一律用补码来表示(存储)。

    主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补

    码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

    2、补码与原码的转换过程几乎是相同的。

    数值的补码表示也分两种情况:

    (1)正数的补码:与原码相同。

    例如,+9的补码是00001001。

    (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。

    例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码

    0000111按位取反为1111000;再加1,所以-7的补码是11111001。

    已知一个数的补码,求原码的操作分两种情况:

    (1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。

    (2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取

    反,然后再整个数加1。

    例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负

    数,所以该位不变,仍为“1”;其余7位1111001取反后为0000110;再加1,所以是10000111。

    在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模”

    的概念:

    “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范

    围,即都存在一个“模”。例如:

    时钟的计量范围是0~11,模=12。

    表示n位的计算机计量范围是0~2(n)-1,模=2(n)。【注:n表示指数】

    “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的

    余数。任何有模的计量器,均可化减法为加法运算。

    例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:

    一种是倒拨4小时,即:10-4=6

    另一种是顺拨8小时:10+8=12+6=6

    在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。

    对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特

    性。共同的特点是两者相加等于模。

    对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再

    加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的

    模为2(8)。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以

    了。把补数用到计算机对数的处理上,就是补码。

    另外两个概念

    一的补码(one's complement) 指的是正数=原码,负数=反码

    而二的补码(two's complement) 指的就是通常所指的补码。

    这里补充补码的代数解释:

    任何一个数都可以表示为-a=2^(n-1)-2^(n-1)-a;

    这个假设a为正数,那么-a就是负数。而根据二进制转十进制数的方法,我们可以把a表示为:a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)

    这里k0,k1,k2,k(n-2)是1或者0,而且这里设a的二进制位数为n位,即其模为2^(n-1),而2^(n-1)其二项展开是:1+2^0+2^1+2^2+……+2^(n-2),而式子:-a=2^(n-1)-2^(n-1)-a中,2^(n-1)-a代入a=k0*2^0+k1*2^1+k2*2^2+……+k(n-2)*2^(n-2)和2^(n-1)=1+2^0+2^1+2^2+……+2^(n-2)两式,2^(n-1)-a=(1-k(n-2))*2^(n-2)+(1-k(n-3))*2^(n-3)+……+(1-k2)*2^2+(1-k1)*2^1+(1-k0)*2^0+1,而这步转化正是取反再加1的规则的代数原理所在。因为这里k0,k1,k2,k3……不是0就是1,所以1-k0,1-k1,1-k2的运算就是二进制下的取反,而为什么要加1,追溯起来就是2^(n-1)的二项展开式最后还有一项1的缘故。而-a=2^(n-1)-2^(n-1)-a中,还有-2^(n-1)这项未解释,这项就是补码里首位的1,首位1在转化为十进制时要乘上2^(n-1),这正是n位二进制的模。

    不能贴公式,所以看起来很麻烦,如果写成代数式子看起来是很方便的。

    注:n位二进制,最高位为符号位,因此表示的数值范围-2^(n-1) ——2^(n-1) -1,所以模为2^(n-1)。上面提到的8位二进制模为2^8是因为最高位非符号位,表示的数值范围为0——2^8-1。

    00分享举报

    展开全文
  • 有符号整、小数的原、反、补码表示范围,及补码比原、反码多表示一的原因。计算机组成原理学习笔记。

      mark一下。
      以n位机器码为例。
    1. 原码:
      有符号整数:[-(2^n-1), 2^n-1];
      有符号小数:[-(1-2^(-n)), 1-2^(-n)];
    2. 反码的表示范围和原码相同
    3. 补码
      有符号整数:[-2^n, 2^n-1];
      有符号小数:[-1, 1-2^(-n)];

      从上我们可以看出,有符号数的补码要比原码和反码多表示出一位来,那么究竟是为什么呢?

      补码比原码、反码多出一位的原因:
      以8位机器码表示的有符号整数为例,它可以表示的原码和反码范围是[-127, 127],而可以表示的补码范围是[-128, 127]。
      原码和反码的±0是不同的表示方法,即:
        +0:00000000
        -0 :10000000
      而反码的±0都是同一个表示方法,同样以8位机器码为例:
        ±0 :00000000
      因此补码中便多出了一个<10000000>,可以用来表示其他的数,此处即可以表示真值为-128。在最位的1,既表示负号、又表示数值位。

    展开全文
  • 原码,反码,补码表示范围

    千次阅读 2019-12-14 21:20:41
    图中已经很清楚的给出范围,原码与反码都有正零,负零之分,而补码没有。补码比原码反码多表示,那就是-2^n

    在这里插入图片描述
    图中已经很清楚的给出范围,原码与反码都有正零,负零之分,而补码没有补码比原码反码多表示一位,那就是-2^n

    展开全文
  • 计算机组成原理——原码、反码、补码表示范围

    千次阅读 多人点赞 2020-03-26 20:52:24
    原码表示法在数值前面增加了一符号(即最高为符号):0表示为正数,1表示为负数,其余为数值表示数值大小。 纯整数的原码 原码的范围是 – (2n–1) ≤ x ≤ 2n–1(n是整数位数) 这是如何得到的呢? 以...
  • 原码、反码和补码表示范围

    千次阅读 2017-01-03 14:32:09
    首先形成的概念是:原码和反码小数表示范围是一样的,仅仅是二进制的存储不同罢了。 更有趣的是它们的存储范围是关于零点对称的! 原码小数,反码小数都是:−1+2−n=x=1−2−n 中间是+0,−0两种 x0x1x2x3…...
  • 计算机为何采用补码表示负数1.1 原码:1 - 1 = 01.2 反码:1 - 1 = 01.3 补码:1 - 1 = 02. int类型的表示范围(以16bits为例) 1. 计算机为何采用补码表示负数 计算机的原码、反码和补码可知,计算机有三种编码...
  • 原码反码补码总说N+1位范围

    千次阅读 2021-03-13 11:03:30
    为什么原码反码补码总说N+1,用这个前提去讨论它的范围呢?说说N位不是很好嘛? 原因分析: 后来才发现,其实是我自己太片面了,如果讨论N+1字长。 第一:可以在公式里面用N表示数值范围,也比较方便 第...
  • ===================================================================================== 1、正数的反码和补码都与原码相同。...1、原码表示法规定:用符号数值表示带符号数,正数的符号用“0...
  • 在讨论位数与数值范围的时候...如果是n位数,则其数值范围为:0 ~(2的n次方-1)#有符号型#因为有符号型的数,都是用补码表示,且规定正数的补码就是本身,负数的补码需要进行计算。要达到以上规定的要求,要求在表...
  • char表示数值范围

    千次阅读 2011-03-28 12:09:00
    unsinged char 能表示数值是多少?char 是一个有符号数。知识点(原码、反码、补码)原码就是取 绝对值。反码是原码取反。补码是反码+1。singed char 原码 :1111 1111-01111111 - 127 --- +127还有一个 1000 0000...
  • 浮点数所表示数值范围

    万次阅读 多人点赞 2018-06-22 17:41:50
    1. 浮点数表示: F=M* R^E M为尾数,E为阶码,R是基数(为2) 设阶码数值E取k;阶符1且采用补码;尾数R的数值n位;...浮点数所表示数值范围,分为规格化与非规格化: 非规格化: ...
  • 而用其补码表示则是-128 ~ +127 ----> 10000000~01111111,为什么10000000就是表示-128, 回答: 因为有一是符号,所以后7数值位。 2^7=128,所以正数和负数各有127个(正数0 000 0000 ~ 0 111 1111、负数...
  • 计算机数值表示范围

    千次阅读 2019-10-19 21:04:27
    码制 定点整数 定点小数 原码 -(2^(n-1)-1) ~ +(2^(n-1)-1) -(1-2^-(n-1)) ~ +(1-2^-(n-1)) ...-(2^(n-1)-1) ~ +(2^(n-1)-1) -(1-2^-(n-1)) ~ +(1-2^...补码 -2^(n-1) ~ +(2^(n-1)-1) -1 ~ +(1-2^-(n-1)) 移码 -2...
  • 计算机中数值的三种表示方法详解 原码 反码 补码 最近在学习软件评测师的知识 其中涉及到计算机的原码 反码和补码等知识 通过网上查阅资料 进行了深入学习 分享给大家 本文主要从以下几点进行 介绍 如何计算原码 ...
  • 当两符号 为 01, 10时就是溢出,这时取最高为符号,其他数值位 */ #include<bits/stdc++.h> using namespace std; int binary_x[6]; int binary_y[6]; void BaseConversion(int n, int b, ...
  • 计算机组成原理之补码表示法补数补码补码的引入补码的定义利用原码求补码 补数 在学习补码之前,我们要了解一下补数。补数,顾名思义,就是互补的数。 例如: 时针转一圈为12小时,当时钟指示为六点,想要它指向三点...
  • 机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的,在计算机中用一个数的最高存放符号,正数为0,负数为1。比如,十进制中的数 +3 ,计算机字长为8,转换成二进制就是00000011...
  • 去,即在数轴上把数都统一往右移动n位,使得所有的数都不为负数。这里我们有E=e+01111111,所以对于所有 的E有E大于等于0。这里的话,由于E都不为负数,所以我们直接可以由移码的表示形式看出对应数值的大小(这 里是...
  • 定点小数补码表示法介绍

    千次阅读 2011-07-20 16:34:00
    补码表示法,是用机器数的最高一代表符号,以下各位给出数值按2取模结果的表示方法,其定义为 [X]补= (2.10) 例如: X=+0.1011, [X]补=01011 X=-0.1011, [X]补=10101 按补码的定义,当X=-0.1011时,[X]补 = ...
  • 为什么要用补码表示

    千次阅读 2012-01-04 13:46:41
    另外,两个用补码表示的数相加时,如果最高(符号)有进位,则进位被舍弃。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9),但因只有8,最高1自然丢失。又回了00000000,所以8...
  • 实验报告课程名称:计算机组成原理系别:学生姓名:班级:学号:成绩:指导教师:开课时间:2013-2014学年第二学期实验一实验目的通过仿真软件验证真值转化为原码、反码、补码、移码,补码加减交替除法运算规则,补码乘法...
  • 一、9月15号第二章 无符号数 计算机中无符号数的核心就是进制转换。常用的是十进制(D)、二进制(B)、八进制(O也经常用Q)、十六进制(H)之间的转换问题。...反码(负数):在原码的基础上,符号不变,数值位
  • [汇编]数的补码表示及其加减运算

    千次阅读 2016-07-20 15:42:48
    [汇编]数的补码表示及其加减运算 补码表示法 ... 负数的补码表示:相应的正数按求反,末位加1即为该负数的补码表示    求负数补码表示的方法:  (1)写出与该负数相对应的正数的补码
  • 其余n-1数值位,采用补码表示法时,可表示的数X的范围是 -2的(n-1)次幂 <= X <= 2的(n-1)次幂-1。如果字长是16补码表示范围就是 -2的15次幂 <= X <= 2的15次幂-1,也即可表示的范围是-32768到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,604
精华内容 5,041
关键字:

n位补码表示数值范围