数制与编码

156 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情

数制与编码

进位计数制

image-20220908192907900

有1到9,共十种符号

逢十进一

image-20220908193146213

image-20220908193426655

计算机使用二进制的原因:

  1. 可使用两个稳定状态的物理器件表示
  2. 0,1正好对应逻辑值假、真。方便实现逻辑运算
  3. 可很方便地使用逻辑门电路实现算术运算

任意进制—>十进制

image-20220908203422848

二进制转八进制、十六进制

image-20220908204009416

各种进制的常见书写方式

image-20220908204407947

十进制转任意进制

image-20220908204730176

image-20220908204750409

真值和机器数

image-20220908204852135

真值:符合人类习惯的数字

机器数:数字实际存到机器的形式,正负号需要被“数字化”

BCD码

8421码的映射关系:

image-20220911174559587

image-20220911174745319

image-20220911174924994

1101不在映射表里

8421码中1010~1111没有定义

如果出现在(1010~10010)范围里则+6(0110)

image-20220911175302402

image-20220911175454227

无符号的整数的表示和运算

无符合整数,即“自然数”,0、1、2、3、4...

C语言中的无符号整数

 unsigned short a=1; //无符号整数(短整型,2B)
 unsigned int b=2; //无符号整数 (整型,4B)

无符号整数的表示

image-20220911194032620

无符号整数:

  1. 全部二进制位都是数值位,没有符号位,第i位的位权是2的i-1次方
  2. n bit 无符号整数表示范围0~2的n次方-1,超出则溢出,意味着该计算机无法一次处理这么多
  3. 可以表示的最小的数全0,可以表示的最大的数全1

无符号整数的加法运算

image-20220911195032672

计算机硬件如何做无符号整数的加法:从最低位开始,按位相加,并往更高位进位

image-20220911195228815

计算机硬件如何做无符号整数的减法:

  1. “被减数”不变,“减数”全部位按位取反、末位+1,减法变加法
  2. 从最低位开始,按位相加,并往更高位进位

image-20220911195728206

image-20220911195812405

带符号整数在计算机中的应用

带符号整数,即“整数”,-2,-1,0,1,2,3,4...

C语言中的带符号整数:

 short a=1;//带符号整数(短整型,2B)
 int b=-2;//带符号整数(整型,4B)

原码表示

image-20220912162434015

原码:

  • 符号位“0/1”对应“正/负”,剩余的数值位表示真值的绝对值
  • 若机器字长n+1位,带符号整数的原码表示范围-(2的n次方-1)~2的n次方-1
  • 真值0有两种形式:+0和-0,[+0] = 0,0000000; [-0] = 1,0000000

原码的缺点:符号位不能参与运算,需要设计复杂的硬件电路才能处理

用补码表示真值--符号位可以参与运算

原码->反码->补码的转换

image-20220912164225529

原码、补码 快速转换技巧

image-20220912165904800

补码的加法运算

image-20220912181815975

image-20220912182203391

补码的减法运算

image-20220912182546393

image-20220912182714417

计算机硬件如何做带符号数补码的减法:

  1. “被减数”不变,“减数”全部位按位取反、末位+1,减法变加法
  2. 从最低位开始,按位相加,并往更高位进位

image-20220912183127824

原反补码的特性对比

image-20220912183930299

原码和反码的合法表示范围完全相同,都有两种方法表示真值0

补码的合法表示范围比原码多一个负数,只有一种方法表示真值0

移码

原、反、补、移码的转换

image-20220912185115891

移码:补码的基础上将符号位取反。注意:移码只能用于表示整数

image-20220912185514866

image-20220912185629320

各种码的基本特性总结

image-20220912185716846

原码和反码的合法表示范围完全相同,都有两种方法表示真值0

补码的合法表示范围比原码多一个负数,只有一种方法表示真值0

移码的合法表示范围比原码多一个负数,只有一种方法表示真值0

用几种码表示整数

image-20220912190747223

定点整数、定点小数

image-20220912193105776

原码

image-20220912194038906

定点小数原/反/补码的转换

image-20220912194156439

定点小数的加/减运算

对两个定点小数A、B进行加法/减法时,需要先转换为补码

计算机硬件如何做定点小数补码的加法:从最低位开始,按位相加(符号位参与运算),并往更高位进位

计算机硬件如何做定点小数补码的减法:

  1. “被减数”不变,“减数”全部位按位取反、末位+1,减法变加法
  2. 从最低位开始,按位相加,并往更高位进位

定点小数VS定点整数

image-20220912195109588

位数扩展时,扩展位置不一样

image-20220912195520721

小数补码的加法运算

image-20220912200134295

计算机硬件如何做补码的加法:从最低位开始,按位相加(符号位参与运算),并往更高位进位

image-20220912200327038