持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第19天,点击查看活动详情
运算方法和运算电路
奇偶校验码
奇校验码:整个校验码(有效信息位和校验位)中“1”的个数为奇数
偶校验码:整个校验码(有效信息位和校验位)中“1”的个数为偶数
电路的基本原理、加法器设计
算术逻辑单元(ALU)
最基本的逻辑运算
复合逻辑
一位全加器
串行加法器
并行加法器
并行加法器的优化
补码加减运算器
加法器原理
补码加/减法运算方法
标志位生成
定点数的移位运算
移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法
原码的算数移位
原码的算数移位--符号位保持不变,仅对数值位进行移位
右移:高位补0,低位舍弃。若舍弃的位=0,则相当于/2;若舍弃的位≠0,则会丢失精度
左移:低位补0,高位舍弃。若舍弃的位=0,则相当于*2;若舍弃的位≠0,则会出现严重误差
定点小数同理
反码的算数移位
反码的算数移位--正数的反码与原码相同
因此对正数反码的移位运算也和原码相同
右移:高位补0,低位舍弃
左移:低位补0,高位舍弃
反码的算数移位--负数的反码数值位与原码相反
因此负数反码的移位运算规则如下
右移:高位补1,低位舍弃
左移:低位补1,高位舍弃
补码的数移位
补码的算数移位--正数的补码与原码相同
因此对正数补码的移位运算也和原码相同
右移:高位补0,低位舍弃
左移:低位补0,高位舍弃
补码的算数移位--负数补码=反码末位+1
导致反码最右边几个连续的1都因进位而变为0,
直到进位碰到第一个0为止
规律--负数补码中,最右边的1及其右边同原码。
最右边的1的左边同反码
负数补码的算数移位规则如下:
右移(同反码):高位补1,低位舍弃
左移(同原码):低位补0,高位舍弃
算数移位
原码乘法运算
补码乘法运算
原码的除法运算
手算除法
手算除法(二进制)
原码除法:恢复余数法
原码除法:恢复余数法(手算)
原码除法:加减交替法(不恢复余数法)
定点数 补码除法运算
补码除法:加减交替法
强制类型转换
无符号数与有符号数;不改变数据内容,改变解释方式
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
数据的存储和排列
大小端模式
边界对齐
现代计算机通常是按字节编址,即每个字节对应1个地址
通常也支持按字、按半字、按字节寻址
假设存储字长为32位,则1个字=32bit,半字=16bit,每次访存只能读/写1个字