什么是二进制数的原码、反码、补码?

如题所述

原码:

正整数的原码:这个数的二进制,符号位为0;正整数的原码=补码=反码

例1:+66

66的二进制:1000010,所以+66的原码: 0 1000010 =补码: 0 1000010=反码: 0 1000010

负整数的原码:仍是这个数的二进制,符号位为1;负整数的原码、反码、补码计算:先求原码,再求反码,最后求补码;

原码转换为反码:符号位不变,数值位按位取反;

原码转换为补码:符号位不变,数值位按位取反,末尾在+1;

例2:-66

66的二进制:1000010,所以-66的原码:1 1000010  补码:1 0111101 反码:1 0111110

二、二进制原码、反码、补码的加减运算及标志位

1.补码加减基本公式

加法:

整数 [A]补+[B]补=[A+B]补 (mod 2n+1)

小数 [A]补+[B]补=[A+B]补 (mod 2)jianfa

减法:

整数 [A-B]补=[A]补+[-B]补 (mod 2n+1)

小数 [A-B]补=[A]补+[-B]补 (mod 2)

2.标志位

CF(Carry Flag) :   进为标志位。主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。在8位二进制中,如果计算的结果超过 [0,255] 的范围,就有进位,CF就被置为1,如果结果再 [-128,127] 范围内,就是没有进位CF被置为0。

OF(Overflow Flag) :溢出。用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。在8位二进制中,如果一个运算的结果最终超过 [-128,127] 无论是大于127还是小于-128就被认为是溢出,OF被置为1,如果结果在 [-128,127] 就认为没溢出OF被置为0。

SF(Sign Flag) :符号标志。用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

ZF(Zero Flag) :零标志。用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

PF(Parity Flag) :奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

AF(Auxiliary Carry Flag) :辅助进位标志。在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:(1)、在字操作时,发生低字节向高字节进位或借位时;(2)、在字节操作时,发生低4位向高4位进位或借位时。
温馨提示:内容为网友见解,仅供参考
第1个回答  2024-11-26

在计算机系统中,数值,一律采用【补码】表示和存储。

原码和反码,都是无用的。 在计算机中,也不保存它们。

因此,人们也不必关心它们。

虽然,计算机用是二进制数。

但是,进行数学计算时,二进制数、十进制数,并没有本质的区别。

十进制数中,有补数,二进制数中,有补码。

它们,都是雷同的。

其实,所谓的补码,并不是什么什么码,它们也是数。

你就看十进制吧。

当你忽略了进位,+99,能代替-1:

●  27 + 99 = (进位 1) 26,

●  27 - 1 = 26。

当你舍弃了进位,正数,就能当负数、加法,就能完成减法运算。

在计算机中,虽然用的是二进制,也同样有这样的规律。

只要舍弃了进位,计算机中,就没有了负数和减法运算。

所以,计算机,只需配置一个加法器,便可横行天下!

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

什么是补数?  99、1,又是什么关系?

若两数之和,为 10、100、1000 ... 10^n,这两个数,就是【互为补数】。

如:4 和 6、88 和 12、455 和 545 等等,就互为补数。

99、1,显然也是互为补数。

------

对于二进制数来说,若两数之和,为 2^n,也就是互为补数了。

八位二进制的进位,是 2^8 = 256 = 1 0000 0000 (二进制)。

那么,1 和 255、2 和 254、...、128 和 128,都是互为补数的关系。

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

补数,有什么用呢?

在前面已经证明,在十进制时:-1,就可以用 +99 代替。

同样道理,在二进制时:-1 就可以用 255 (1111 1111) 代替。

其它的:-2 用 1111 1110、-3 用 1111 1101、、、代替即可。

这些代替负数的正数,就是计算机专家发明的“补码”了。

其实,“补码”,并不是什么什么码,它也是正常的数值。

而且,“补码”和什么“机器数符号位原码反码取反加一”,并无任何关系。

所谓的:[ X ]补 + [ Y ]补 = [ X + Y ]补,也不过是故弄玄虚而已。

关键的问题是:舍弃进位! 他们却没有认真的强调一下。

------

其实,进位、舍弃进位、补数,这些都是小学算术中的概念。

计算机专家如果好好的上个小学,就一定不会编造那些无聊的概念了。

什么是二进制数的原码、反码、补码?
正整数的原码:这个数的二进制,符号位为0;正整数的原码=补码=反码 例1:+66 66的二进制:1000010,所以+66的原码: 0 1000010 =补码: 0 1000010=反码: 0 1000010 负整数的原码:仍是这个数的二进制,符号位为1;负整数的原码、反码、补码计算:先求原码,再求反码,最后求补码...

计算机的原码,反码,补码是怎么回事?可以举例说明吗?
原码、反码和补码是计算机中对数字二进制的三种表示方法。1、原码 原码(trueform)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如:用8位二进制表示一个数,...

什么是补码原码和反码
1、原码。就是二进制定点表示法,原码表示法在数值前面增加了一位符号位,正数该位为0,负数该位为1,其余位表示数值的大小,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小。2、反码。是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用...

什么叫原码?反码?补码?
因此,原码就是保持二进制数原来的形式,再加上符号位的码。如+1001原码是01001,-1001的原码为11001,分别写为+1001原=01001,-1001原=11001。关于反码和补码应区分两种情况:(1)对于正数来说,其原码、反码和补码是相同的。例如正数(+1101)的原码、反码、补码都是01101。 (2)对于负数来说,其原码、反...

反码补码原码是什么意思
原码是最基本的编码方式,适用于简单的数值表示和计算。反码是在原码的基础上发展而来,主要用于解决正负数运算问题。补码是在反码的基础上进一步改进,主要用于解决计算机中数值的范围问题,使得计算机能够表示所有的整数。2、编码方式 原码直接将数值的二进制形式作为原码,正数的原码与其二进制形式相同,负数...

什么是原码、反码、补码?
1、原码的定义 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。①小数原码的定义 [X]原 = X 0≤X <1 1- X -1 < X ≤ 0 例如: X=+0.1011 , [X]原= 01011 X=-0.1011 [X]...

二进制正,负数的原码,反码,补码三者之间是什么关系
可以通过原码、反码和补码三者的含义及关系来介绍三者之间的换算关系:1、原码原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。比如如果是8位二进制:[+1]原=00000001[-1]原=10000001第一位是符号位。2、反码正数的反码是其本身负数的反码是在其原码的基础上,符号位不变,其余各...

在电脑中的原码,反码,补码都是什么意思啊
在计算机科学中,数值的表示方式主要有原码、反码和补码三种形式。原码是指一个数直接按照二进制形式表示,其中最高位表示符号位,0代表正数,1代表负数,其余位表示该数的绝对值。例如,+1的原码表示为0000 0001,-1的原码表示为1000 0001。反码用于简化正负数的加减运算。对于正数,其反码与原码相同;...

什么是原码、反码、补码!
计算机中的数以二进制形式存储,称为机器数,其中最高位用于存放符号,0代表正数,1代表负数。机器数有三种表示方式:原码、反码和补码。计算机通常使用补码存储,便于简化减法运算,将其视为加法。以下是这三种编码方式的介绍:1. 原码(0表示正数,1表示负数):例如,十进制的+7转换为8位二进制是...

反码、原码、补码表示什么意思?
数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制;在八位二进制下,-128不能用原码或反码表示,反码只能表示0到127,-0到-127;用补码表示为:10000000 在八位整数里原码的取值范围为-127到+127,反码也是;在八位二进制中就把-0当作最小数-128用,也就是10000000 -0的原码:...

相似回答
大家正在搜