小数和负数的原码反码和补码怎么表示

 我来答
蓝雪儿老师
高能答主

2020-02-04 · 愿千里马,都找到自己的伯乐!
蓝雪儿老师
采纳数:266 获赞数:85194

向TA提问 私信TA
展开全部

(一)原码;原码的表示方法:原码的数值部分就是该数的绝对值,然后再加上符号位。即用第一位表示符号,其余位数表示值。

+1 [原码] = 0000 0001。

-1 [原码] = 1000 0001。

如果是8位二进制得取值范围为:[1111 1111 , 0111 1111],即为 [-127,127]。

原码的加减法运算:

两数相加:机器首先判断两个数是否符号相同,如果相同则两数相加。若符号不同,则两数相减。

两数相减:相减运算之前,先判断两数绝对值的大小,用大数减去小数,然后再确定差值的符号。

 (二)反码;反码的表现方式:

正数,其反码和原码的形式相同;负数,反码与其原码的数值部分各位变反;即符号位不变,其余各位取反。

+1 = 0000 0001 [原码] = 0000 0001 [反码]。

-1 = 1000 0001 [原码] = 1111 1110 [反码]。

如果一个反码表示的是负数,直观上是无法看出它的数值,需要先将其转换成原码再进行计算。

(三)补码;补码的表示方法:

正数:补码和原码形式相同。

负数:补码为其反码的末位加1。

+1 = 0000 0001 [原码] = 0000 0001 [反码] = 0000 0001 [补码]。

-1 = 1000 0001 [原码] = 1111 1110 [反码] = 1111 1111 [补码]。

补码的数值通常需要将其转换为原码才方便计算其原数值。补码是根据同余的概念引入的。

通过加法来实现减法的例子:假定当前时间为北京时间 6点整,有一只手表是 8点整,比北京时间快了 2个小时。这时候就有两种校准方法:倒拨 2小时;正拨 10小时。假设倒拨是做减法,正拨是做加法。

对于手表来说 -2 和 +10是等价的(也就是说减2可以用加10来实现),这是因为这是因为8加10等于18,然而手表最大只能指示12,当大于12时12自然丢失,18减去12就只剩6了。

扩展资料:

原码、反码、补码的使用:

计算机中有三种编码方式表示一个数,对于正数三种编码方式返回的结果都是相同的。

+1 = 0000 0001 [原码] = 0000 0001 [反码] = 0000 0001 [补码]

对于这个负数:

-1 = 1000 0001 [原码] = 1111 1110 [反码] = 1111 1111 [补码]对于计算机来说,加减乘除是最基础的运算,要尽量设计的简单,计算机辨别出 符号位 会使得计算机的基础电路设计变得更加复杂,所以人们想出了将符号位也参与运算的方法。

减去一个正数等于加上一个负数,即 2-1 = 2+(-1),所以机器只有加法而没有减法。符号位参与运算,只保留加法运算。

(一)原码运算:

十进制的运算:1-1=0。

1-1=1+(-1) = 0000 0001 [原码] + 1000 0001 [原码] = 1000 0010 [原码] = -2。

如果用原码表示,让符号位也参与计算,对于减法来说,结果显然是不正确的,所以计算机内部不使用原码来表示一个数字。

(二)反码运算:

为了解决原码做减法的问题,就引出了反码。

十进制的运算:1-1=0。

1-1=1+(-1) = 0000 0001 [原码] + 1000 0001 [原码] = 0000 0001 [反码] + 1111 1110 [反码] = 1111 1111 [反码] = 1000 0010 [原码] = -0。

使用反码计算减法,结果的真值部分是正确的,但是在 ‘0’这个特殊的数值上。虽然 +0和 -0在意义上是一样的,但是0加上符号是没有任何意义的,0000 0001[原码] 和1000 0001[原码] 这两个编码都表示0。

(三)补码运算:

补码的出现,解决了 0 的符号以及两个编码的问题。

十进制的运算:1-1 =0。

1-1=1+(-1) = 0000 0001 [原码] + 1000 0001 [原码] = 0000 0001 [补码] +  1111 1111[补码] = 0000 0000[补码] = 0000 0000[原码] = 0。

这样 0 用 [0000 0000] 表示 ,而以前出现问题的 -0 就不存在了,而且可以用 [1000 0000] 表示 -128。

(-1) + (-127) = 1000 0001[原码] + 1111 1111[原码] = 1111 1111[补码] + 1000 0001[补码] = 1000 000[补码] = -128。

-1-127 的结果应该是 -128,在用补码运算的结果中,1000 0000[补码] 就是-128,但是注意因为实际上使用 -0 的补码来表示 -128,所以 -128并没有原码和反码表示。(-128的补码表1000 0000[补码] 算出来的 0000 0000[原码] 这样是不正确的)。

舒适又舒畅的行家7208
推荐于2018-05-04 · TA获得超过258个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:229万
展开全部
先转换成原码,小数点左边为符号位(正数——0;负数——1),然后转换成反码(即每一位取反),最后再加1.
eg:x=-0.11101转换成原码x=1.11101;然后转换反码x=1.00010;最后转换成补码(即+1)x=1.00011.
PS:符号位在转换反码的时候不需要取反。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-11-01 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部

小数的表示方法,与整数是雷同的。

小数点,有两种默认的位置。

定点整数,小数点位置,在数值位的末尾。

定点小数,小数点位置,在数值位和符号位中间。

小数点位置以及对应的数据范围,看看下图吧:

字长是 n + 1。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙里波特
2020-09-11 · TA获得超过5248个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:631万
展开全部
题主怎么会想到这个!
在计算机中,小数,是用“浮点数”存放的。
并不是用原码反码补码这些简单的事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式