计算机组成原理问题,有关原码,补码的定义
当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 和 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
--------------------
在这本书中,平白无故的加上了小数点,属于误导。
作者不懂实际的东西,只是自说自话,胡言乱语,就不必再看了。
理解带符号数,应该从补码开始。
原码、反码,只是求补码的中间过程,不用多费心思。