原码、反码和补码

  1. 原码

正数的符号位用0表示,负数用1表示,其余位为数值,这种表示方法称为原码。

X=+105,[X]=0110 1001

Y=-105,[Y]=1110 1001

原码简单易懂,与真值的换算也很方便,但若要进行两个异号数相加或者两个同号数相减的运算,就要做减法操作。然而在一般的计算机中是没有减法运算部件的,减法运算也要用加法部件实现,所以要引进反码和补码。

  1. 反码

正数的反码与原码相同,最高位为符号位,用0表示,其余位为数值。

[X]=0110 1001

负数的反码为它的正数按位取反,即连同符号位一同取反。

[Y]=1001 0110

所以,8位二进制数表示的反码范围为-127~+127。当带符号数用反码表示时,最高位为符号位,当它为正数时,后7位为真正的值,当它为负数时,后7位要取反后才能得到真正的值。

  1. 补码

正数的补码表示与原码相同,最高位为符号位,用0表示,其余位为真值,负数的补码最高位为1,数值部分则由它的反码再加1形成。

[X]=0110 1001

[Y]=1001 0111

8位二进制数能表示的补码范围为-128~+127,可以推算出16位二进制数能表示的二进制补码的范围为-32768~+32767。当带符号数用补码表示时,最高位是符号位,当符号位是0时,表示正数,后7位为其真正的数;当符号位是1时,表示负数,要将后7位的最低为减1,求得反码,再按位取反,才能得到真正的数(真数)。

任何一个数用补码表示后,都可以看成“连同符号位的数”。符号位也一起参加运算,一个数要减去另一个数时,只要加上其补码即可。

做减法运算,求7-19=?可以用7+[-19]来完成。

[7]=
0000 0111

[+19]=0001
0011

[-19]=1110
1101

0000
0111 [7]

+
1110 1101 [-19]


1111 0100

所以,和的补码=1111
0100

和的反码=1111
0011

和的原码=1000
1100 其真值为-12。

时间: 2024-10-25 05:02:55

原码、反码和补码的相关文章

计算机的原码, 反码和补码

一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011.如果是 -3 ,就是 10000011 . 那么,这里的 00000011 和 10000011 就是机器数. 2.真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值.例如上面

【组原】计算机的原码, 反码和补码

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

进制转换转换以及原码反码和补码

一.进制转换 1.数制和码制 常用数制表示法 十进制 二进制 八进制 十六进制 8421BCD码 0 0 0 0 0000 1 1 1 1 0001 2 10 2 2 0010 3 11 3 3 0011 4 100 4 4 0100 5 101 5 5 0101 6 110 6 6 0110 7 111 7 7 0111 8 1000 10 8 1000 9 1001 11 9 1001 10 1010 12 A 0001 0000 11 1011 13 B 0001 0001 12 1100

进制的转化and原码反码和补码

常用的进制 1.二进制(0b):  由两个数字组成 0-1 2.八进制(0o):  由八个数字组成0-7 3.十六进制(0x):  由十六个数字组成:  0-f 各进制与十进制之间的相互转换 0b100   = 0x2^0 + 0x2^1 + 1x2^2 = 4(十进制) 0o100   = 0x8^0 + 0x8^1 + 1x8^2 = 64(十进制) 0x100   = 0x16^0 + 0x16^1 + 0x16^2 = 256(十进制) 二进制与八进制的转换 三位合成一位: 0b 100

原码, 反码, 补码 详解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

[转]原码, 反码, 补码 详解 很全

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

关于原码, 反码, 补码的复习

原本大一时考试90+的组成原理,隔了太长时间没使用,概念也慢慢模糊了,由于最近考试的基础知识有可能用到,于是,在网上找些资料,整理成这个文章,方便以后某天回来看看,好记性真不如烂笔头. 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011.如

详解 原码, 反码, 补码

本篇文章讲解了计算机的原码, 反码和补码. 并且深入探求了为何要使用反码和补码, 以及更进一步论证了为何可以用反码和补码的加法计算原码的减法. 论证部分如有错误请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机中用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位

[转载]原码, 反码, 补码 详解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

原码,反码,补码详解及 Java中>>和>>>的区别

前两天分析 HashMap 的 hash 算法的时候,遇见了 >> 和 >>> 这两个符号,当时查了下资料,在脑子中过了一下.今天又碰到了,没想到竟然忘了  0-0........ 我这记忆力哎,不说了.只好做个笔记,提醒自己,遇到啥不会的最好记下来,好记性不如烂博客啊~ 既然涉及到位运算,我们追本索源,就先从最基础的原码,补码和反码学起.搜了一下这方面的资料,发现一篇专门介绍这方面的文章,写的很是透彻,便直接引用过来了,原文地址是:http://www.cnblogs.co