原码、反码、补码的快速学习

原码、反码、补码

  • [1. 引言](#1. 引言)
  • [2. 原码、反码、补码](#2. 原码、反码、补码)
    • [2.1 原码](#2.1 原码)
    • [2.2 反码](#2.2 反码)
    • [2.3 补码](#2.3 补码)
  • 原反补的范围
  • 总结

1. 引言

本篇适合没什么计算机基础的新手,快速入门上手,内容不会讲的很详细

计算机能理解的只有二进制,也就是0和1,为了更好的处理负数的问题,引入了符号位。

以八位二进制数为例,用计算机的最高位(即左边第一位)记为符号位。

其中0 为正数的符号位,1为负数的符号位,也可以和数学对应的记一下:0相当于数学中的正号,1相当于数学中的负号。

2. 原码、反码、补码

为了更好的学习原码、反码和补码,这边我们用四个十进制数字来举例,这四个数字分别是:

6 -5 -127 127

2.1 原码

原码很好理解,就是将这几个十进制数字都转换成八位二进制数字,不足的向前面补0。

首先对这几个数字的正负性进行判断。

6为正数,所以符号位即最高位为0,将6转化二进制为110,其余空的补0,即⬇️

0000 0110

同理,剩下三位数字的原码为

-5

负数,符号位1,5的二进制是101

1000 0101

-127

1111 1111

127

0111 1111

2.2 反码

在使用原码时,我们也存在弊端,在进行加法运算时,(-1)+1的结果为0,在使用原码进行计算时,人为计算会很快出现答案,但对于计算机来说,还需要单独处理符号位,计算会变得复杂。

因此,为了方便进行负数的运算,引入了反码的概念。

反码的规则是:

正数的反码=原码

负数的反码:第一位(首位)符号位不变,其它位取反,即0取1,1取0。

如:

-5的原码为 1000 0101

其补码为 1111 1010

6为正数,即其反码=原码

0000 0110

-127

1111 1111

127

0111 1111

2.3 补码

上述无论是原码还是反码都存在一个问题,关于0的表述。

在原码中,0000 0000和1000 0000都表示0,在反码中0000 0000 和1111 1111都表示0,即+0和-0表述的问题。

为了确保0的唯一性,引入了补码的概念。

正数的补码等于其原码;负数的补码等于其反码+1,原来的-0的反码为1111 1111,它的补码为0000 0000。

补充:这里反码+1的结果应该为1 0000 0000,但存储是以一字节即八位二进制数存储,所以这里的1会直接溢出(这边对溢出不进行详细介绍),即-0的补码为0000 0000,这样以来+0和-0都指向了唯一编码 0000 0000。

这边就不继续进行举例了,可以使用该网站进行查看原反补在线网站

因此负数的补码还多了一位,即1000 0000,符号位为1,因此这个数为负数,这里规定1000 0000为-128。

原反补的范围

因为在关于0的表述中,原码和反码都存在着两个不同的编码指向同一具体数值(即0),8位二进制数一共可以表达出256种可能,这边关于0的表述占了一位,因此原码和反码的表示范围为 -127~127

补码的表示范围:-128~127

总结

正数的原码反码和补码是一样的,即正数的原码=反码=补码;

负数的反码:除符号位外其余位取反;

负数的补码:反码+1。

原码、反码范围:-127~127

补码范围:-128~127

相关推荐
tellmewhoisi2 小时前
深度学习8:神经网络学习5:随机梯度下降法(基本概念,基本原理)
深度学习·神经网络·学习
ACP广源盛1392462567311 小时前
Type-C 扩展坞方案选型笔记:DP1.4 转 HDMI2.0 桥接方案评估@ACP
笔记·硬件架构·hdmi·国产芯片·扩展坞
Canmag 兴隆磁性11 小时前
中大型钕铁硼产品的磁通测量与自动分选:一条产线自动化的工程实现思路
运维·学习·自动化·永磁材料
ss27313 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 22 PostgreSQL实例与集群
数据库·笔记·postgresql
ss27313 小时前
AI时代首先数据库-PostgreSQL实战笔记 | 21 PostgreSQL进程与内存架构介绍
数据库·笔记·postgresql
小黄人软件13 小时前
桌面需要整理吗?有工具自动分类
学习
老衲不用@飘柔14 小时前
SFP与SFP+学习知识整理
学习
X54先生(人文科技)14 小时前
社会嵌入式终身学习机器与修复时代-ELR架构和技术演化探讨
人工智能·深度学习·学习·架构·开源协议
电子云与长程纠缠15 小时前
UE5魂系游戏开发教程05
开发语言·学习·游戏·ui·ue5