数值的表示方法——原码、反码和补码

看书上就直接出来定义,我想知道哪些数要这样表示,为什么这样表示,有何作用

原码、反码和补码是几乎所有计算机教材的第一课,很基础也很简单,由于这些内容一直跟二、四、十六进制的转化放在一起,我从来都是跳过这章直接往下看的,直到有一天,我自己被一个超白目的问题难倒了……”将-3右移2(bit)位,结果是多少?”一下子,我发现,在过去的学习中我挑食了,现在补上这一课。原码,是自然数值的机器数表示。具体的表示规则是这样的:最高为作为符号位,剩下的位是数值位。比如-3原码表示为10000011(如图)。原码的数值表示范围跟二进制的位数有关,如8位二进制数最大的表示范围是-127~+127之间(最高位是符号位)。反码,是机器数运算过程的中间表示形式。具体规则是:正数的反码和原码相同;负数的反码是符号位不变,其他位按位求反得到的。如,-3的补码是11111100。补码,是机器数的运算表示形式。引入了补码克服了原码的局限性(由于符号位要单独操作,运算方法比较复杂),使得计算减法可以用计算加法的方式得到;补码另外的优点是,数字0补码表示的唯一性。具体的规则是:正数的补码和原码相同;负数的补码是反码末位加1。如,-3的补码是11111101。然后,运算器对数值进行右移操作,负数补1,正数补0,得到11111111。从符号位看,代表的是负数,还原成原码方法是求补码的补码,得到原码10000001,代表十进制数-1。总结一下:正数的原码,反码和补码相同。负数的反码是原码保持符号位不变,其他位按位求反;补码是反码加1。补码还原是补码的补码。左移操作即所有的高位舍去(包括符号位),右边(低位)补0;右移操作,所有的低位舍去(右移),高位(左边)负数补1,正数补0。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-09-21
这个我前几天给一个人解释过~我把回答的复制过来~ 计算机不会减法~补码的作用是把减法变成加法~书上一般是总结的规律方便记忆~ 但是你实际从低层原理上看~并不是很准确~比如 补码是没正负号的~以下是我在其他地方的回答~ 计算机不会减法`所以用补码把减法变成加法` 你看的数一般就说 "正数的补码是其本身,负数的补码是原码按位取反后1,符号位就是最高位等等`"但是确没说为什么 正书可以127`负数居然可以存128位其实是不准确`或者说有的地方是不对的从底层看`只是为了方便你记忆总结的规律~我们还是来看8位~ 首先~我得说补码无正负号~这是官方解释~ 8位二进制一共可以表示多少位数字?255个加个0~~ 其次~补码其实是 跟最小数的 "距离"~为什么这么说是最小数的距离`解释很麻烦`不过有个最简单的方法是穷举`(我们先看后7位~第一位我稍后解释为什么不是正负号)-128 是多少 0000000-127 0000001-128 0000002………………-1 11111110 00000001 0000001……………………127 1111111 从这里我们可以看出~7位反码是跟最小数 -128的距离~ 但我们又发现个问题~ -1到0的时候进位了`但是我们只有7位` 进的那一位没有` 这就是为什么要8位的原因~但现在又出现个问题` 为什么 没进位的第一位是1~进位以后第一位是0~也就是说~ -1为什么不是01111111 而是11111111?我们还是举例来说明`- 1+-2为多少~至少显然是个负数~ 而如果-1表示为 01111111`那-1+-2`会为11111101~ 负数加负数居然等于整数!显然不行`所以 -1也11111111表示~ 也就是说` -128不是从00000000开始` 而是从10000000开始(注意开始穷举是7位`这里是八位)~ 所以我们看出~第一位主要是为了进位也有区别正负数的作用~但是其实不是正负号~其实这些举例都可以换成数学方式说明~不过估计说起更复杂~举例说明简单些~ 希望对你有帮助
第2个回答  2013-09-21
32 学汇编了啊

数值的表示方法——原码、反码和补码
回答:原码、反码和补码是几乎所有计算机教材的第一课,很基础也很简单,由于这些内容一直跟二、四、十六进制的转化放在一起,我从来都是跳过这章直接往下看的,直到有一天,我自己被一个超白目的问题难倒了……”将-3右移2(bit)位,结果是多少?”一下子,我发现,在过去的学习中我挑食了,现在补上这...

补码,原码,反码什么的。有什么作用啊!
原码:原码就是早期用来表示数字的一种方式: 一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。举例:int类型的 3 的原码是 11B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得:00000000 00000000 00000000 00000011 int类型的...

计算机中的反码、原码、补码各指什么?
-0的反码:11111111 -128的补码:10000000

什么是原码、补码和反码?
原码 = 反码 + 1 反码 = 补码 - 1 补码 = 2^n - 1,其中n为数值的位数 例如,假设我们要计算一个8位有符号整数的原码、补码和反码,则可以按照以下步骤进行计算:1. 将8位二进制数10000001转换为十进制数:127 2. 计算原码:原码 = 反码 + 1,则反码为11111110,加上1得到原码为10000000...

原码反码和补码有什么区别?
其余各位取反, 最后+1(即在反码的基础上+1)。正数的原码,反码,补码都一样。原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

什么是原码,补码和反码?
原码、补码和反码(1)原码表示法 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。例如,X1= +1010110X2= 一1001010其原码记作:〔X1〕原=[+1010110]原=01010110〔X2〕原=[-1001010]原=11001010原码表示数的范围...

计算机原码,反码和补码是怎么计算的?
[+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 可见如果一个反码表示的是负数,人脑无法直观地看出来它的数值。通常要将其转换成原码再计算。3、补码 补码的表示方法是:正数的补码就是其本身。负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1...

计算机的原码,反码,补码是怎么回事?可以举例说明吗?
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码的表示方法是:正数的反码与其原码相同;负数的反码是对正数逐位取反,符号位保持为1。例如:[+7]反= 0 0000111 B;[-7]反= 1 1111000 B。3、补码 正数:正数的补码和原码相同...

原码、反码和补码的转换及表示范围
数字在机器中存储都是用二进制来存储的,有符号数则有:原码、反码和补码三种表示方式。这三种表示方式里,最高位均代表符号位,1-负数,0-正数。1.原码 一个数的原码就是该数直接转换成二进制得到的数字,第一位是符号位。2.反码 正数的反码是自己本身;负数的反码是原码除符号位不动,其他所有位...

原码反码补码的深入理解与原理
反码表示方法是在原码的基础上,对负数取反,即符号位不变,数值位按位取反。例如,-7的反码为1111000。反码的优点是加法和减法运算可以直接用位运算来实现,但是存在两个零的表示(+0和-0)。补码表示方法是在反码的基础上,将负数的最低有效位加1。例如,-7的补码为1111001。补码的优点是加法和...

相似回答