图灵Day2笔记

图灵Day2笔记

图灵Day2笔记

Coding_Zhouzehao

·

2023-07-10 13:49:17

·

个人记录

Day 2 原码补码反码

1.原码

在二进制当中,可没有数字前面加一个负号就可以表示负数这么一说,那么我们怎么表示一个二进制负数呢?

我们可以在二进制中加一个符号位来区分正数与负数

比如在 8 位二进制数中,用第 8 为作为符号位,可以用 00000010 表示 2 ,用 10000010 表示 -2

带有符号位的二进制数,就叫做原码,而这个原码的绝对值就叫做真码,也就是原码去掉符号位

所以 原码 = 符号位 + 真码

2.反码

正数的反码是正数的原码,而负数的反码就不一样了

负数的反码就是负数的原码除了符号位,其余位取反

比如 10001010 的反码就是 11110101

3.补码

又是一个灵魂拷问:"在数学当中,负数的意义是什么呢?"

$-2$ 就是表示一个加上 $2$ 就等于 $0$ 的数

$-114514$ 就是表示一个加上 $114514$ 就等于 $0$ 的数

那么补码的意义就是为了表示一个负数的意义

负数 + 补码的真值 = $0

也可以用另一种定义方式:补码 = 反码 + 1

在计算机当中,有一个神奇的现象,你可以试试,在 Dev-C++ 中,让程序输出 cout << (~5) ; 得到的会是 -6 ( ~5 是 5 取反的意思)

有同学就会说了,这不对呀! 5 的二进制明明是 101 ,取反之后不应该是 010 也就是 2 吗?为什么输出的是 -6 呢

原来, 在计算机中是这样是用补码存储的

即 $10000101+1 = 100000110 = (-6)_2$ 了

------

总结来说,可以归纳为一个表格

| | 反码 | 补码 |

| ---- | ------------------------ | -------- |

| 正数 | 是它本身 | 是它本身 |

| 负数 | 符号位不变,其余按位取反 | 反码+1 |

##### 4.二进制、八进制、十六进制之间的转换

$2^3 = 8$ ,所以在二进制和八进制之间可以三位三位地转换

例如 $0100010111$ 我们可以三位三位的拆开 $0\ 100\ 010\ 111$ 每三位数对应的数字就是 $4,2,7$ 了,直接连起来

就有 $(427)_8

进制转换就是那么简单

同理可得, 2^4 = 16 ,所以二进制和十六进制之间可以四位四位地转换

那么 $[10, 15]$ 怎么表示呢

我们用 $A$ 表示 $10$, $B$ 表示 $11$ , 依此类推,$F$ 表示 $15

相关推荐