码农养成记4——原码、反码、补码

简介: 转载请标明地址 QuincySx:https://www.jianshu.com/p/f134b15ff1de原码、反码、补码是什么数字最早被我们在自然界抽象出来的时候本没有正负之分,比如一个人,两个人,三个人。

转载请标明地址 QuincySx:https://www.jianshu.com/p/f134b15ff1de

原码、反码、补码是什么

数字最早被我们在自然界抽象出来的时候本没有正负之分,比如一个人,两个人,三个人。没有负一个人之说

那么在计算机表示数字的时候也是没有正负之分,现在我们假设计算机是用 1 字节也就是 8 bit 来存储数据,那么数字 1、2 再计算机中如何表示呢

//无符号
1 -> 0000 0001
2 -> 0000 0010

想必大家都知道现阶段我们使用的计算机数据存储运算都是二进制数据

到了后来在我们生活中为了表示“你欠我钱”等等这个概念,所以划分出了『正数』、『负数』

那么相应的计算机世界就出现了 原码 这个概念

原码:把最左边的一位腾出来表示正负,0 表示正数,1 表示负数

//原码
+1 -> 0000 0001
+2 -> 0000 0010
-1 -> 1000 0001
-2 -> 1000 0010

当计算机世界发明了原码之后出现一个棘手的问题,就是自然界中 1 + (-1) = 0 而计算机的计算结果呢 00000001 + 10000001 = 10000010 (-2) 咦这个结果可不对啊,怎么办呢

所以聪明的人类又给计算机世界发明了 反码

反码:正数的反码与其原码相同,负数的反码是符号位不变其他位取反

//反码
+1 -> 0000 0001
+2 -> 0000 0010
-1 -> 1111 1110
-2 -> 1111 1101

这个问题解决了但是又出现了一个新的问题,00000001 + 11111110 = 11111111 (-0) 这样一来在计算机中出现了两个 0 这可不行

//反码
+0 -> 0000 0000
-0 -> 1111 1111

怎么办呢,人们又为计算机世界贡献了 补码 的概念

补码:正数的补码与其原码相同,负数在反码的基础上 +1

//补码
+1 -> 0000 0001
+2 -> 0000 0010
-1 -> 1111 1111
-2 -> 1111 1110

这样一来 00000001 + 11111111 = 1 0000 0000 可是位数超了可是我们的存储空间就 8 bit 怎么办呢,所以就舍去 1 保留 00000000 (0)

这样一来就完美了,在计算机世界中进行数据运算就和我们的规则就统一了

小结

上述过程在现实发展中肯定不是这个过程,因为这是我胡乱造的(哈哈,是不是有点信以为真),但是他们的出现确实是为了解决上面说的问题

通过这篇文章我们了解了原码、反码、补码

原码:把最左边的一位腾出来表示正负,0 表示正数,1 表示负数
反码:正数的反码与其原码相同,负数的反码是符号位不变其他位取反
补码:正数的补码与其原码相同,负数在反码的基础上 +1

上面还迁移默化的说了一个问题不是到各位观众老爷看出来了没

就是现代计算机运算都是先换算成补码然后进行运算的

有说的不明白的地方欢迎各位拍砖

目录
相关文章
|
7月前
|
存储 编译器 C语言
【原码、反码、补码】小白看完都呲大牙
【原码、反码、补码】小白看完都呲大牙
233 1
【原码、反码、补码】小白看完都呲大牙
|
21天前
|
C语言
【C语言】原码、反码、补码详解 -《码上有道 ! 》
在计算机科学中,整数的表示方式有多种,包括原码、反码和补码。这些表示方式主要用于解决整数的二进制表示和计算问题。本文将详细介绍这三种表示方法,并通过示例来说明它们的原理和应用,特别是它们在C语言中的应用。
87 5
|
2月前
让星星⭐月亮告诉你,原码、反码、补码以及为什么要用反码和补码
机器数是数在计算机中的二进制表示,最高位表示符号。真值是机器数对应的实际数值。原码、反码、补码分别是数的不同二进制表示方式,其中补码解决了0的表示问题及简化了计算机的运算设计,使得计算机只需实现加法器即可完成加减运算。
86 2
|
2月前
深入解析计算机科学的基础:原码、反码与补码
深入解析计算机科学的基础:原码、反码与补码
|
6月前
|
存储
一分钟了解什么是原码-反码-补码
一分钟了解什么是原码-反码-补码
|
6月前
|
程序员
程序员必知:原码、反码、补码和移码详解
程序员必知:原码、反码、补码和移码详解
109 0
【软考学习2】数据表示——原码 反码 补码 移码
【软考学习2】数据表示——原码 反码 补码 移码
145 0
|
7月前
【中级软件设计师】—(针对上午题)原码与反码、补码和移码(十二)
【中级软件设计师】—(针对上午题)原码与反码、补码和移码(十二)
|
7月前
|
存储 Java
JavaSE - 原码,反码,补码和>>以及>>>
JavaSE - 原码,反码,补码和>>以及>>>
88 0
【408计算机组成原理】—原码、反码、补码、移码(六)
【408计算机组成原理】—原码、反码、补码、移码(六)