有一个小孩,很小很小的,他只认识 100 个数,也不会做减法。
那么,减一,你就可以告诉他,用加 99 代替:
比如:
36 - 1 = 35
36 + 99 = (1) 35
忽略进位 100,结果不是一样的吗?
那么:
99,就是-1 的补数。
98,就是-2 的补数。
。。。
利用补数,就可以把减法,转换为加法运算。
--------------------
在计算机中,数据,都是以二进制存储的,称为:代码。
八位二进制的范围是:0000 0000 ~ 1111 1111。
用十进制表示,就是:0~255,共有 256 组代码。
正数,直接参加运算即可,用不着求补码。
那么,负数呢?
-1 的补码,就是 255(1111 1111);
-2 的补码,就是 254(1111 1110);
。。。
-128 的补码,就是 128(1000 0000);
这些负数,与补码之间的关系式,小学生都可以推算出来。
根本就不用扯到“原码和反码”。
在计算机中,根本就没有原码和反码。
在计算机系统中,数值,一律使用补码来表示和存储。
原码和反码,在计算机中,都不存在的。
所以,补码和它们的转换,也是不存在的。
-----------------------
补码,其实就是一个“代替负数”的正数。
利用补码,减法,就可以用加法运算来代替。
由此,就可以简化计算机的硬件。
如“2 位 10 进制的运算”:
24 - 1 = 23
24 + 99 = (一百) 23
舍弃进位( 一百),+99 就和-1 等效。
加法,也就相当于减法了。
+99 怎么算出来?
+99 = 10^2-1 。
式中的 10^n,是 n 位数的计数周期。
-----------------------
补码的定义式如下:
零和正数: [ X ]补 = X, X >= 0;
负数补码: [ X ]补 = 周期 + X, X < 0。
利用定义式,直接就可以求出 X 的补码。不需要讨论原码和补码。
-----------------------
学习补码,重点是理解补码的意义。
从“原码反码符号位取反加一”,这就走错道了。
什么是原码、补码和反码?
原码、补码和反码是计算机中表示数值的基本方式,它们之间的关系可以通过以下公式进行计算:原码 = 反码 + 1 反码 = 补码 - 1 补码 = 2^n - 1,其中n为数值的位数 例如,假设我们要计算一个8位有符号整数的原码、补码和反码,则可以按照以下步骤进行计算:1. 将8位二进制数10000001转换为十进制...
原码补码反码怎么计算?
1、原码符号位1不变,整数的每一位二进制数位求反,得到反码。2、反码符号位1不变,反码数值位最低位加1,得到补码。方法:(1)正整数的原码,反码和补码计算。【符号位为0,原码=反码=补码】(2)负整数的原码,反码和补码计算,先求原码,再求反码,最后求补码。(3)根据补码求真值,一般使...
原码反码和补码有什么区别?
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值,如\\r\\n[+1]原 = 0000 0001\\r\\n[-1]原 = 1000 0001\\r\\n正数的反码是其本身\\r\\n负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.\\r\\n[+1] = [00000001]原 = [00000001]反\\r\\n[-1] = [10000...
什么是补码原码和反码
计算机中的符号数有三种表示方法,即原码、反码和补码,具体如下:1、原码。就是二进制定点表示法,原码表示法在数值前面增加了一位符号位,正数该位为0,负数该位为1,其余位表示数值的大小,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小。2、反码。是数值存储的一种,多应用于系统...
原码反码和补码有什么区别?
正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。正数的补码就是其本身,负数的补码是在其原码的基础上符号位不变,其余各位取反, 最后+1(即在反码的基础上+1)。正数的原码,反码,补码都一样。原码(true form)是一种计算机中对数字的二进制定点表示方法。原码...
原码反码补码是多少
+35:原码=反码=补码=0100011 -35:原码:1100011;反码:1011100;补码:1011101;
计算机的原码,反码,补码是怎么回事?可以举例说明吗?
原码、反码和补码是计算机中对数字二进制的三种表示方法。1、原码 原码(trueform)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。例如:用8位二进制表示一个数,...
什么是原码、反码、补码?
原码转换为反码:符号位不变,数值位按位取反;原码转换为补码:符号位不变,数值位按位取反,末尾在+1;例2:-66 66的二进制:1000010,所以-66的原码:1 1000010 补码:1 0111101 反码:1 0111110 二、二进制原码、反码、补码的加减运算及标志位 1.补码加减基本公式 加法:整数 [...
原码、反码、补码之间怎么快速转换,大神带你轻松学
一、原码、反码、补码的转换过程如下:在原码表示中,0有两种表示方式:[+0]原=0000000,[-0]原=1000000。反码表示中,0也有两种表示形式:[+0]反=0000000,[-0]反=11111111。补码表示中,0有唯一的编码:[+0]补=0000000,[-0]补=0000000。计算机采用这些编码方法,便于运算,提高运算速度。原码...
正数的原码反码补码到底是不是一样的?
C语言里正数的原码反码补码是一样的。符号位是0,原码,反码,补码:00001010;补码是为负数想出来的办法,目的是减法可以用加补码的方法实现。补码可用反码加1得来,于是又有了负数的反码。计算机里有硬件“加法器”,有了补码,减法也可以用加法器做了。计算机里运算速度,硬件远快于软件,这是做出反码...