如何求一个小数的原码、补码、反码和真值表

如题所述

一、小数部分的原码和补码可以表示为两个复数的分子和分母,然后计算二进制小数系统,根据下面三步的方法就会找出小数源代码和补码的百位形式。

37/64=100101B/2^6=0.100101B

-51/128=110011B/2^7=0.0110011B

二、将十进制十进制原始码和补码转换成二进制十进制,然后根据下面三步的方法求出十进制源代码和补码形式。一个

0.375=0.011B

0.5625=0.1001B

三、二进制十进制对应的原码和补码

[37/64]源代码=[0.100101B]源代码=00100101B

[-51/128]源代码=[0.0110011b]源代码=10110011B

[0.375]原码=[0.011b]原码=00110000B

[0.5625]源代码=[0.1001B]源代码=01001000B

[37/64]补体=[0.100101B]补体=00100101B

[-51/128]补体=[0.0110011b]补体=11001101B

[0.375]补码=[0.011b]补码=00110000B

[0.5625]补体=[0.1001B]补体=01001000B

扩展资料:

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

在计算机中对数字编码有三种方法,对于正数,这三种方法返回的结果是相同的。

+1=00000001[原码]=00000001[逆码]=00000001[补码]

对于这个负数:

对计算机来说,加、减、乘、除是最基本的运算。有必要使设计尽可能简单。如果计算机能够区分符号位,那么计算机的基本电路设计就会变得更加复杂。

负的正数等于正的负数,2-1等于2+(-1)所以这个机器只做加法,不做减法。符号位参与运算,只保留加法运算。

(1)原始代码操作:

十进制操作:1-1=0。

1-1=1+(-1)=00000001[源代码]+10000001[源代码]=10000010[源代码]=-2。

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

(2)逆码运算:

为了解决原码相减的问题,引入了逆码。

十进制操作:1-1=0。

1-1=1+(-1)=00000001[源代码]+10000001[源代码]=00000001[源代码]+11111110[源代码]=11111111[源代码]=10000010[源代码]=-0。

使用反减法,结果的真值部分是正确的,但在特定的值“0”。虽然+0和-0在某种意义上是相同的,但是0加上符号是没有意义的,00000001[源代码]和10000001[源代码]都代表0。

(3)补充操作:

补语的出现解决了零和两个码的符号问题。

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

1-1=1+(-1)=00000001[原码]+10000001[原码]=00000001[补码]+11111111[补码]=00000000[补码]=00000000[原码]=0。

这样,0表示为[00000000],而之前的-0问题不存在,可以表示为[10000000]-128。

(-1)+(-127)=10000001[源代码]+11111111[源代码]=11111111[补充]+10000001[补充]=1000000[补充]=-128。

-1-127的结果应该是-128。在补码操作的结果中,10000000[补码]是-128,但是请注意,由于-0的补码实际上是用来表示-128的,所以-128没有原码和逆码。(-128的补码表10000000[补码]计算出的00000000[原码]是不正确的)。

温馨提示:答案为网友推荐,仅供参考