[计算机基础]原码、反码、补码是什么?-编程思维

机器数

现在的计算机(冯·诺依曼体系结构)采用的是二进制,在计算机内表示一串二进制数 01101001,称之为机器数。计算机无法识别人类定义的加、减、乘、除、正、负等数学符号,对于如何表示正、负的二进制数字,规定二进制数中,最高位用“0”代表正,用“1”代表负。其余部分的数字称之为真值,最高位称之为符号位。比如,01101001 二进制数的符号位(最高位)是 0,所以,它是一个负数,真值部分为 1101001。

原码

原码就是符号位加上真值的绝对值。简单来说,原码就是机器数。

在十进制中\(5 - 5 = 0\)可以写成\(5 + (-5) = 0\),对于二进制也同样适用。将十进制的 5 和 -5 分别转换成机器数(原码),5 的机器数是 00000101;-5 的机器数是 10000101。符号位 0 代表正,1 代表负,因此,\(00000101+10000101=10001010\)的最终结果转换为十进制就是\(-10\)

为什么结果是 -10 呢?很显然,这并不是正确的答案。然而,反码能够解决原码做减法出现的问题,这也是为什么计算机内部不使用原码表示一个数

反码

对于正数来说,反码与原码一致。对于负数来说,反码就是原码的符号位不动,真值一一取反。

00000101 的反码依旧是 00000101;10000101 的反码是 11111010,用反码代替上面原码的减法:

最后反码相减的结果是 11111111,由于符号位是 1,即负数,所以反码要转换成原码,真正的结果是 10000000,转换为十进制数就是“-0”。

在十进制中,10000000 和 00000000 都代表 0,但是前者是带有符号“正”的0,后者是带有符号“负”的0。所以,为了区别开来,补码就出现了。

补码

对于正数来说,补码与原码一致。对于负数来说,补码就是该数的反码加1。

10000101 的反码是 11111010,补码是\(11111010 + 1 = 11111011\),用补码代替上面反码的减法:

由于最后的结果是十位数,所以直接舍去最高位 1。剩下部分的符号位为 0,正数的反码和原码以及补码都是一致的,所以,最终结果是 0。符合\(5 + (-5) = 0\)

版权声明:本文版权归作者所有,遵循 CC 4.0 BY-SA 许可协议, 转载请注明原文链接
https://www.cnblogs.com/shiramashiro/p/15811944.html

[计算机基础]字符编码是什么?-编程思维

字符编码 字符编码(Character Code)就是规定用怎样的二进制码来表示字母、数字以及一些专用符号。 在计算机系统中,有两个重要的字符编码方式,一种是美国国际商业机器公司(IBM)的扩充二进制码 EBCDIC,主要用于 IBM 的大型主机,还有一种就是微型计算机系统中用得最多最普遍的美国标准信息交换码(Amer

[计算机基础]计算机数据的存储方式-编程思维

计算机只能识别二进制,计算机中数据的最小单位是二进制的一位数,简称为位,英文为 bit。一个比特只能表示两种状态,即 0 或 1,两个比特就能表示四种状态,即 00、10、01、11。对于人们平时用得字母、数字、符号只需要用 8 位二进制数进行编码就能将它们区分开来。因此,将 8 位二进制数称作“字节”,英文为 Byt

[计算机基础]计算机的进制-编程思维

进制 信息在现实世界中无处不在,表现形式有数字、字母、符号、图标、图像、声音等。然而,任何形式的信息都可以转换为二进制被计算机直接处理。在计算机内部无论是存储数据还是进行数据运算,一律采用二进制。 为什么计算机要采用二进制呢?原因如下: 二进制在电器元件最容易实现,而且稳定、可靠,二进制只要求识别 0 和 1 两个符号

微型计算机硬件系统-编程思维

学习目的 学习微型计算机硬件结构,掌握对微型计算机的宏观认识。 了解总线的概念、三种总线的作用、三种总线的关系。 了解 RAM 和 ROM 的作用。 了解输入/输出接口、适配器和网卡的概念。 硬件结构 微型计算机的硬件结构也是同样遵循冯·诺依曼体系结构,不过微型计算机采用了总线结构。微型计算机的各个部件通过总线交换信息

计算机硬件系统-编程思维

学习目的 了解计算机硬件结构。 了解输入/输出设备的作用。 了解存储器的作用、计算机存储单位(如bit、byte)、字或单元、字长。 了解内存储器中 RAM 和 ROM 的概念、外存储器与内存储器的区别、CPU 与内存储器的关系。 了解 CPU 的运算器和控制器的作用、CPU 的字长。 硬件结构 根据冯·诺依曼设计思想

计算机软件系统-编程思维

学习目的 了解计算机软件系统的概念。 了解软件系统和系统软件的区别。 了解系统软件的分类、应用软件的分类。 了解数据库(db)、数据库管理系统(dbms)和数据库系统(dbs)之间的区别。 了解操作系统的概念、操作系统的功能、操作系统的分类以及常用的操作系统。 软件系统 软件是用来方便用户使用计算机和提高计算机使用效率