原码反码补码

摘要:
源代码补码(1)源代码表示源代码表示是机器号的简单表示。符号位使用0表示正号,使用:表示负号。数值通常以二进制形式表示。如果数字是x,原始代码可以记录为[x]。例如,X1=+1010110X2=-1001010,其原始代码记录为:[X1]原始=[+1010110]原始=0101110[X2]原始=[-1001010]原始=111001010,原始代码编号的范围与二进制数字有关。当使用8位二进制来表示原始十进制码时,

原码反码补码

(1)原码表示法

原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。

例如,X1= +1010110

X2= 一1001010

其原码记作:

〔X1〕原=[+1010110]原=01010110

〔X2〕原=[-1001010]原=11001010

原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:

最大值为0.1111111,其真值约为(0.99)10

最小值为1.1111111,其真值约为(一0.99)10

当用8位二进制来表示整数原码时,其表示范围:

最大值为01111111,其真值为(127)10

最小值为11111111,其真值为(-127)10

在原码表示法中,对0有两种表示形式:

〔+0〕原=00000000

[-0] 原=10000000

(2)补码表示法

机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。

例如,[X1]=+1010110

[X2]= 一1001010

[X1]原=01010110

[X1]补=01010110

即 [X1]原=[X1]补=01010110

[X2] 原= 11001010

[X2] 补=10110101+1=10110110

补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:

最大为0.1111111,其真值为(0.99)10

最小为1.0000000,其真值为(一1)10

采用8位二进制表示时,整数补码的表示范围:

最大为01111111,其真值为(127)10

最小为10000000,其真值为(一128)10

在补码表示法中,0只有一种表示形式:

[+0]补=00000000

[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)

所以有[+0]补=[+0]补=00000000

(3)反码表示法

机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。

例如:X1= +1010110

X2= 一1001010

〔X1〕原=01010110

[X1]反=〔X1〕原=01010110

[X2]原=11001010

[X2]反=10110101

反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。

例1. 已知[X]原=10011010,求[X]补。

分析如下:

由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即

[X]原=10011010

[X]反=11100101

十) 1

[X]补=11100110

例2. 已知[X]补=11100110,求〔X〕原。

分析如下:

对于机器数为正数,则〔X〕原=〔X〕补

对于机器数为负数,则有〔X〕原=〔〔X〕补〕补

现给定的为负数,故有:

〔X〕补=11100110

〔〔X〕补〕反=10011001

十) 1

〔〔X〕补〕补=10011010=〔X〕原

或者说:

数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,

原码就是这个数本身的二进制形式。
例如
0000001 就是+1
1000001 就是-1

正数的反码和补码都是和原码相同。

负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101
一个数和它的补码是可逆的。

为什么要设立补码呢?

第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)

免责声明:文章转载自《原码反码补码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇用QT在Windows下编写dll程序python直接打印列表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

原码 反码 补码 移码的关系(精简总结)

依然是为了避开那些繁琐复杂晦涩的概念与术语,为了确保能清晰的梳理它们之间的关系,现分为两部分说明 1. 机器数 是 正数  符号位为0 原码 = 反码 = 补码 eg:机器码长度为8,求X(6)10原码 反码 补码 移码 [X]原 = 00000000+110=00000110 [X]补=[X]反=[X]原 =00000110 [X]移=10000110...

深度理解 原码, 反码, 补码

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机...

004_详解计算机各种语言浮点数运算会存在精度损失原因

      数值数据是一种带符号数,有正负之分.在计算机中对数据进行运算操作时,符号位如何表示?是否也同数值位一道参加运算?如参加,会给运算操作带来什么影响?为了妥善处理好这些问题,就产生了将数值位连同符号位一起编码来表示相应的数的各种表示方法,如数据的原码、补码、反码和移码表示法. 一、所有相关的码解释 (1)正数的原码=反码=补码 负数原码=>最...

数的机器码表示——彻底弄清什么是原码、反码、补码、移码

数的机器码表示 @ 目录 数的机器码表示 原码 定点整数 定点小数 原码的计算 反码 定点整数 定点小数 反码的运算 补码 补码的由来 定点整数 定点小数 补码的运算 移码 移码的表示 移码的特点 原码、反码、补码、移码 为了妥善的处理数据运算过程中符号位的问题,于是就产生了把符号位和数值位一起编码起来表示相应的数的各种表...

位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码

位运算符的基本规则1,位运算符都是针对整数的二进制数字形式而进行的。2,按位与运算基本规则(规则表):1 & 1 ==> 11 & 0 ==> 00 & 1 ==> 00 & 0 ==> 0;3, 按位或运算基本规则1 | 1 ==> 1;1 | 0 ==> 1;0 | 1 ==>...

原码,反码,补码,移位

https://www.cnblogs.com/btgyoyo/p/6371398.html 复习下二进制的有关知识 1.所有的数据都是以二进制的形式存储在硬盘上。对于一个字节的8位到底是什么类型 计算机是如何分辨的呢? 其实计算机并不负责判断数据类型,数据类型是程序告诉计算机该如何解释内存块. 2.对于字符的存储,先将字符转化成其字符集的码点,(码点就是...