运算方法和运算电路

173 阅读4分钟

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

运算方法和运算电路

奇偶校验码

奇校验码:整个校验码(有效信息位和校验位)中“1”的个数为奇数

偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数

image-20220912201159256

image-20220912201629212

电路的基本原理、加法器设计

算术逻辑单元(ALU)

image-20220914190512163

最基本的逻辑运算

image-20220914190932244

image-20220914191212701

复合逻辑

image-20220914192716853

一位全加器

image-20220914201632779

串行加法器

image-20220914201902754

并行加法器

image-20220914202032395

并行加法器的优化

image-20221004223530867

补码加减运算器

加法器原理

image-20221005154646851

补码加/减法运算方法

image-20221005155010990

image-20221005175535158

标志位生成

image-20221005182834861

image-20221005183129364

定点数的移位运算

image-20221005215245839

移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法

原码的算数移位

image-20221005215619649

image-20221005215931990

原码的算数移位--符号位保持不变,仅对数值位进行移位

右移:高位补0,低位舍弃。若舍弃的位=0,则相当于/2;若舍弃的位≠0,则会丢失精度

左移:低位补0,高位舍弃。若舍弃的位=0,则相当于*2;若舍弃的位≠0,则会出现严重误差

定点小数同理

反码的算数移位

image-20221005220727753

反码的算数移位--正数的反码与原码相同

因此对正数反码的移位运算也和原码相同

右移:高位补0,低位舍弃

左移:低位补0,高位舍弃

反码的算数移位--负数的反码数值位与原码相反

因此负数反码的移位运算规则如下

右移:高位补1,低位舍弃

左移:低位补1,高位舍弃

补码的数移位

image-20221005221333200

补码的算数移位--正数的补码与原码相同

因此对正数补码的移位运算也和原码相同

右移:高位补0,低位舍弃

左移:低位补0,高位舍弃

补码的算数移位--负数补码=反码末位+1

导致反码最右边几个连续的1都因进位而变为0,

直到进位碰到第一个0为止

规律--负数补码中,最右边的1及其右边同原码。

最右边的1的左边同反码

负数补码的算数移位规则如下:

右移(同反码):高位补1,低位舍弃

左移(同原码):低位补0,高位舍弃

算数移位

image-20221005222058523

原码乘法运算

image-20221006152812436

image-20221006152828556

image-20221006152852009

image-20221006152945493

image-20221006153000917

image-20221006153017934

image-20221006153041621

image-20221006153057600

image-20221006153113338

image-20221006153140827

image-20221006153200825

image-20221006153215249

image-20221006153234621

补码乘法运算

image-20221006160038483

image-20221006161513208

image-20221006161548280

原码的除法运算

手算除法

image-20221006173946485

手算除法(二进制)

image-20221006175752317

原码除法:恢复余数法

image-20221007214938150

image-20221007214951424

image-20221007215041210

image-20221007215057217

image-20221007215114750

image-20221007215129380

image-20221007215142476

image-20221007215158239

image-20221007215212574

image-20221007215231271

image-20221007215250467

image-20221007215303216

image-20221007215317499

image-20221007215329811

image-20221007215343139

image-20221007215357639

image-20221007215411417

image-20221007215427085

image-20221007215445359

原码除法:恢复余数法(手算)

image-20221007215647386

image-20221007215814226

原码除法:加减交替法(不恢复余数法)

image-20221007220005924

image-20221007220131719

定点数 补码除法运算

补码除法:加减交替法

image-20221007231142075

image-20221007231229520

强制类型转换

无符号数与有符号数;不改变数据内容,改变解释方式

short x=-4321;

unsigned short y=(unsigned short) x;

x:1110 1111 0001 1111 = -4321

y:1110 1111 0001 1111 = 61215

长整数变短整数;高位截断,保留低位

短整数变长整数;符号扩展

short x=-4321;

int m=x;

unsigned short n=(unsigned short)x;

unsigned int p=n;

x:1110 1111 0001 1111

m:1111 1111 1111 1111 1110 1111 0001 1111 真值-4321

n:1110 1111 0001 1111 真值

p:0000 0000 0000 0000 1110 1111 0001 1111 真值61215

数据的存储和排列

大小端模式

image-20221007233537333

边界对齐

现代计算机通常是按字节编址,即每个字节对应1个地址

通常也支持按字、按半字、按字节寻址

假设存储字长为32位,则1个字=32bit,半字=16bit,每次访存只能读/写1个字

image-20221007234622592