认识原码、反码、补码

认识原码、反码、补码[Python常见问题]

01 进制了解

  • 二进制:由0和1共两个数字组成。

  • 八进制:由0-7共八个数字组成。

  • 十进制:由0-9共十个数字组成。

  • 十六进制:由0-9与A-Z(a-z)共十六个字母和数字组成(字母不区分大小写,A-F/a-f分别代表10-15)

02 二进制与八进制对应关系

二进制 八进制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

03 二进制与十六进制转换

二进制 十六进制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

字母不区分大小写

04 原反补的概念

  • 原码:二进制的表现形式

  • 反码:是原码和补码之间的转换关系

  • 补码:二进制的存储形式

05 原反补转换规律

  • 如果是一个正数:原码 = 反码 = 补码
  • 如果是一个负数:原码与反码之间互为取反加1

06 原反补的特点

  • 原码第一位是符号位,用来表达正负
    • 第一位是0,如000 … 001 表示数字为正1
    • 第一位是1,如100 … 001 表示数字为负1
  • 补码特点
    • 正数高位都是0
    • 负数高位都是1
  • 反码特点 :二进制码0变1,1变0叫做反码

07 例1 两正相加

2 + 3
2                        3
原码:000 ... 010        原码:000 ... 011
反码:000 ... 010        反码:000 ... 011
补码:000 ... 010        补码:000 ... 011

000 ... 010
000 ... 011
000 ... 101 => 5 (正数 原码 = 反码 = 补码)

08 例2 一正一负相加

-9 + 5
-9                        5
原码:100 ... 1001         原码:000 ... 0101
反码:111 ... 0110         反码:000 ... 0101
补码:111 ... 0111         补码:000 ... 0101

111 ... 0111
000 ... 0101
111 ... 1100 (负数 原码 = 补码取反加一)

补码:111 ... 1100
反码:100 ... 0011
原码:100 ... 0100 => -4

09 例3 两负相加

-3 + (-2)
-3                        -3
原码:100 ... 011         原码:100 ... 011
反码:111 ... 100         反码:111 ... 100
补码:111 ... 101         补码:111 ... 101

111 ... 101
111 ... 101
100 ... 010 (负数 原码 = 补码取反加一)

补码:100 ... 010
反码:111 ... 101
原码:111 ... 110 => -6
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 认识原码、反码、补码