原码补码反码详解

您所在的位置:网站首页 正数反码补码原码 原码补码反码详解

原码补码反码详解

2023-03-15 04:22| 来源: 网络整理| 查看: 265

原码反码补码 机器数

即在计算机中以二进制表示形式的数,机器数最高位存放符号,表示正负,正数为0,负数为1

比如十进制的+9,计算机字长8位,则表示为0000 1001,-9则为1000 1001

机器数的真值

由于最高位是符号值,机器数的形式值不等于真正数值,1000 1001真值为-9,而不是十进制的137

将带符号的机器数对应的真正数值称之为机器数的真值。

原码、反码、补码是及其存储一个具体数字的编码方式

原码

即符号位加上真值的绝对值,即第一位表示符号,其余位表示值

原[1111 1111, 0111 1111] = 真值[-127, 127]

反码

正数的反码为其本身,负数的反码是在其原码的基础上,符号位不变,其余各位取反。

原[0000 0001, 1000 0001] = 反[0000 0001, 1111 1110] = 真值[+1, -1]

补码

正数的补码就是其本身,负数的补码是在原码的基础上,符号位不变,其余各位取反后+1。

原[0000 0001, 1000 0001] = 反[0000 0001, 1111 1110] = 补[0000 0001, 1111 1111] = 真值[+1, -1]

原因

人脑可以很轻易的理解符号位,然后进行运算,但是要让计算机辨别符号位会让基础电路的设计十分复杂。

计算机更适合做单一的工作,统一使用机器值运算,且各种运算都可用加法表示,最佳为:

将符号位参与运算,并且只保留加法

使用原码计算

1 - 1 = 1 + (-1) = 原[0000 0001]+ 原[1000 0001] = 原[1000 0010] = -2

发现参与到负数的运算,也就是减法的运算,结果是不正确的

使用反码计算

1 - 1 = 1 + (-1) = 原[0000 0001] + 原[1000 0001] = 反[0000 0001] + 反[1111 1110] = 反[1111 1111] = 原[1000 0000] = -0

0和-0对人来讲很好理解,对与计算机来说是两个东西,两个不同的东西表示同一个意义,显然不合理。

使用补码计算

1 - 1 = 1 + (-1) = 原[0000 0001] + 原[1000 0001] = 补[0000 0001] + 补[1111 1111] = 补[1 0000 0000] = 补[0000 0000] = 原[0000 0000]

补码可以用[1000 0000]表示-128:

(-1) + (-127) = 原[1000 0001] + 原[1111 1111] = 补[1111 1111] + 补[1000 0001] = 补[1000 0000]

使用补码,不仅仅修复了0的符号以及存在两个编码的问题,而且还能够多表示一个最低数。这就是为什么8位二进制,使用原码或反码表示的范围为[-127, +127],而使用补码表示的范围为[-128, 127]。

深入

原码、反码、补码 详解!



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3