前言:

本文内容:有符号数和无符号数规则理解、原码反码补码理解

推荐免费计算机底层入门讲解视频:【狂神说】最通俗易懂的计算机底层教学,二进制到汇编学习!_哔哩哔哩bilibili

有符号数和无符号数规则理解

数据都是有宽度的,每个数据代表什么意思呢? 二进制

1
0 1 0 1 0 1 0 1

**规则:**二进制解码增加一个规则?

例如:解析一个音频:mp3解码规则

无符号数规则

你这数字是什么,那就是什么

1
1 0 0 1 1 0 1 0 十六进制:0x9A 

有符号数规则

最高位是符号位:1(负数) 0(正数)

1
1 0 0 1 1 0 1 0  如何转化?

原码反码补码理解

编码规则

有符号数的编码规则

原码:最高位是符号位,对其它位进行本身绝对值即可

反码:

  • 正数:反码和原码相同
  • 负数:符号位一定是1,其余位对原码取反。

补码:

  • 正数:反码和原码相同

  • 负数:符号位一定是1,反码+1

    正数
    0 0000
    1 0001
    2 0010
    3 0011
    4 0100
    5 0101
    6 0110
    7 0111

    负数为相反数

测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#8位算法
#如果是正数,这三个都是一样的
1
#原码 0 0 0 0 0 0 0 1
#反码 0 0 0 0 0 0 0 1
#补码 1 0 0 0 0 0 0 1

#如果是负数
-1
#原码 0 0 0 0 0 0 0 1
#反码 1 1 1 1 1 1 1 0
#补码 1 1 1 1 1 1 1 1

-7
#原码 1 0 0 0 0 1 1 1
#反码 1 1 1 1 1 0 0 0
#补码 1 1 1 1 1 0 0 1

#二进制标志
2 10
4 100
8 1000
16 10000
....

如果看到一个数字,二进制的,需要了解它是有符号数还是无符号数。