计算机组成原理问题,有关原码,补码的定义

计算机组成原理 唐朔飞版 p221
当x=0时 [+0.0000]原=0.0000
[-0.0000]原=1-(0.0000)=1.0000
可见[+0]原 不等于[-0]原,即原码中的“零”有两种表示形式。

我的疑问是
1。原码中的定义就是零有两种表示:
小数时
[x]原=x,1>x>=0 或1-x , 0>=x>1
若把定义改为 [x]原=x,1>x>=0 或1-x , 0>x>1不就没有两种表示了吗?
2。为什么0要用小数原码的定义?整数零也有两种表示?还是整数零和小数零是一回事?

同样对于补码(p223)对于小数,若x=-1,有[x]补=2+x=10.0000-1.0000=1.0000
可见-1本不属于小数范围,但却有[-1]补存在。
不理解上述描述,-1都不是小数,怎么能用小数补码的定义求x=-1的补码呢?还有小数补码的定义中为什么要加入-1的定义?即[x]补=2+x ,0>x>=-1

类似还有0的反码

问题一:
原码中,0有两种表示形式:1(符号位)000与0(符号位)000
你可能认为这是多余,恰恰相反,这是必要的。所以定义中才要强调【≥】。
至于为什么必要,鄙人猜测是能使计算机更好的表达【数的极限】。
比如 lim(a→负0) = 原码负0,lim(a→正0) = 原码正0
或许还有别的用途。鄙人没能查到。但楼主要相信 定义中强调了必要性。

问题二:
楼主是不是被0.0000和1.0000的小数点迷惑了? 那是唐朔飞为了让你看清楚 故意点个点。
那不是小数点,而是分隔符号位和绝对值位的【标志】。
整数0和小数0不是一回事。小数0是科学计数法(浮点数)记的。

问题三:
******-1都不是小数,怎么能用小数补码的定义求x=-1的补码呢?*******
按道理说,-1不是小数,它根本就没有【小数补码形式】,而只可能拥有【整数补码形式】。
可是当人们定义出【小数补码定义】时,惊奇的发现,如果把-1当作小数而去用【小数补码定义】求它的“小数补码”,它居然是符合规则的。那果断批准,批准-1拥有小数补码形式!
(楼主现在应该知道了,这是假设惹的祸。-1固然不是小数,但假设它是小数,于是发现了新大陆——-1的小数补码表示法)而这个假设是有根据的,它的根据就是下面这句话:
【小数补码定义】决定了【-1虽然不是小数,但它可以通过小数补码来表示】

楼主请尽情的批 判唐朔飞吧。他的意思是对的,可是写出来容易被误解成以下:
使用【哪种码】(比如原码、补码) 和他们表示的是【整数0还是小数0】是两个概念!
整数0 有原码表示、补码表示等,小数0 阶码尾数也分原码表示、补码表示,
唐朔飞相当于在说“小数0不是补码呐”这根本就是两个概念。

下面是我重新写的课文,供楼主参考:
//P223 L17
当用补码表示小数时,由于补码不像原码那样有正负0之分,所以比原码能额外表示1个数,
这个额外能表示的数——根据定义——就是-1,虽然它并不是小数,但是在【小数补码】的世界里,可以用【小数的形态】表示出-1这个整数。 我们人类在数学上认为-1是整数,而在
补码计算机的眼中,-1就好像是一个小数一样,和别的小数(补码)拥有相同的形态。
温馨提示:内容为网友见解,仅供参考
第1个回答  2022-04-25

计算机中的数,是由高低电平组成的,只有 1 和 0 两种状态,并没有小数点(.)。

那么,计算机中的数,就都是整数,不可能有小数。

但是,我们可以想像,这些数的单位,都是什么呢?

计算机中的 1:可能是 1 吨煤、1 张纸、1 个西瓜 ... 。

也可能是:一个西瓜,切了 128 块。

计算机中的 1,只代表了 1 块而已。即代表 1/128 个西瓜。

--------------------

八位二进制补码,共有 2^8 = 256 组。

  代表了 128 个负数:-128 ~ -1。

  代表了 128 个非负数:0 ~ +127。

范围就是:-128 ~ +127。

--------------------

补码,本来就都是整数。

但是,整数 1,却代表了 1/128 个西瓜。

那么,把整数的范围,都乘以 1/128,就是西瓜的数量:

  -128 * (1/128)  ~  +127 * (1/128)。

即可得:-1 ~ +127/128。

小数补码的下限,-1,就是这么来的。

--------------------

求补码,不要相信“原码反码取反加一”,那些方法,是有错误的。

求补码,要用补码的定义式来求。

定点整数的补码(mod=2^n)是:

  [X]补 = X      ( 0 ≤ X < 2^(n-1) )

  [X]补 = 2^n-| X |  (-2^(n-1) ≤ X < 0 )

      = 2^n + X  

定点小数的补码(mod=2)是:

  [X]补 = X     ( 0 ≤ X < 1 )

  [X]补 = 2 - | X |  (-1 ≤ X < 0 )

      = 2 + X

--------------------


第2个回答  2021-03-19
计算机中,只有 1、0 这两种代码,并没有小数点。
在这本书中,平白无故的加上了小数点,属于误导。
作者不懂实际的东西,只是自说自话,胡言乱语,就不必再看了。
理解带符号数,应该从补码开始。
原码、反码,只是求补码的中间过程,不用多费心思。

计算机组成原理问题,有关原码,补码的定义
原码中,0有两种表示形式:1(符号位)000与0(符号位)000 你可能认为这是多余,恰恰相反,这是必要的。所以定义中才要强调【≥】。至于为什么必要,鄙人猜测是能使计算机更好的表达【数的极限】。比如 lim(a→负0) = 原码负0,lim(a→正0) = 原码正0 或许还有别的用途。鄙人没能查到。但楼主...

计算机组成原理:原码,补码,反码,移码之间的关系?
所谓原码就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

计算机组成原理补码1.0000和10000的原码分别是什么?要详细解释_百度知 ...
1.0000和10000本就是原码。8位字长纯小数,第一位为符号位,小数点在第一位后面,后七位为具体数值,如: -0.1001原码表示为1.1001,反码为1.0110,补码为1.0111;-1的补码为1.0000000。若数据x的形式为x=x0.x1x2…xn(其中x0为符号位,x1~xn是数值的有效部分,也称为尾数,x1为最高有...

计算机组成原理,补码?
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1。补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1。

求什么事源码 补码 还有什么码 讲汇编这里不懂
这个《计算机组成原理》里面有具体内容。总共有四种码:原码、补码、反码,移码。都是由和组成的数字列。比如说数字13,把它转换成二进制就是原码01101,第一个0代表符号位为正,把原码除符号位外每位求反,末位加一就是补码00011,把原码除符号位外,每位求反就是反码00010,把补码的符号位由0改为1...

请问计算机中补码,原码,反码,移码的定义以及各自的作用是什么,本人编 ...
变编程的话,不需要多深的理解这几个名词的意思,这几个算属于计算机组成原理的范畴。这些都是数据的的二进制形式的不同表示法,一般计算机中的数据多用补码表示,使用补码能够简化运算器的设计,原码就是数据的原二进制数据,补码,反码是相对于原码来说的,移码多用于浮点数的阶符。

计算机组成原理中移码是怎么回事?
机器数:计算机中用编码表达的数值,包括原码、反码、补码、移码等。1》原码:保持原有的数值部分的形式不变,只将符号用二进制代码表示。0为正,1为负。2》反码:原码数值部分各位取反,符号位:0为正,1为负。3》补码:方法1:原码取反末尾加一,符号位:0为正,1为负。方法2:从右到左遇见...

计算机组成原理中移码是怎么回事?
机器数:计算机中用编码表达的数值,包括原码、反码、补码、移码等。1》原码:保持原有的数值部分的形式不变,只将符号用二进制代码表示。0为正,1为负。2》反码:原码数值部分各位取反,符号位:0为正,1为负。3》补码:方法1:原码取反末尾加一,符号位:0为正,1为负。方法2:从右到左遇见...

原码,补码,反码和ASCII编码有什么不同
关于原码反码补码,您可以借本 《计算机组成原理》看看计算机中数据的表示形式。 首先更正下楼上的说法,正数的原码反码补码都相同,即0011的反码也为0011 !!切记 举例来说:对于正数3,其二进制形式为 0011,我们把 0011成为成为真值,在计算机中用0或1表示正负号,那么 0011在计算机中原码可以表示为00011(...

计算机组成原理
计算补码表示的方法:正数的补码表示与原码表示一样;负数的补码表示是原码表示的符号位不变,数值位逐位取反后最低位加1(反码表示最低位加1)。例:[+63]原=0111111 [+63]反=0111111 [+63]补=0111111 [-63]原=1111111 [-63]反=1000000 [-63]补=1000001 x=0.1011,y=-0.01...

相似回答