计算机系统概念

数据的运算
——整数算术运算、浮点数算术运算
——按位、逻辑、移位、位扩展和位截断
指令集中涉及到的运算
——涉及到的定点运算
算术运算
1.带符号整数运算:取负/符号扩展/加/减/乘/除/算术移位
2.无符号整数运算:0扩展/加/减/乘/除
逻辑运算
1.逻辑操作:与/或/非……
2.移位运算:逻辑左移/逻辑右移
涉及到浮点数的运算:加减乘除,没有位移操作和扩展操作。
基本运算部件ALU设计
算术运算:
无符号数、带符号整数、浮点数的加减乘除运算等。
按位运算
1.用途
对位串实现掩码操作或相应的其他处理
(主要用于对多媒体数据或状态/控制信息进行处理)
2.操作
“|”,“&”,“~”,“^”
逻辑运算
用途:用于关系表达式的运算
操作:
1.||表示OR运算
2.&&表示AND运算
3.|表示NOT运算
与按位运算的差异
1.符号表示不同。
2.运算过程不同。
3.结果类型不同。
移位运算:
提取部分信息
扩大或缩小数值的2、4、8……倍。
操作:
1.左移:x<<k;右移x>>k
2.不区分逻辑移位还是算术移位,由x的类型决定。
3.无符号数:逻辑左移、逻辑右移
高(低)位移出,低(高)位补0,可能溢出
若高位移出的是1,则左移时发生溢出
带符号整数:算术左移,算术右移
左移,高位移出,低位补0,可能溢出。
溢出判断,若移出的位不等于新的符号位,则溢出。
右移:低位移出,高位补符,可能发生有效位数据丢失
位扩展和位截断运算
用途:类型转换时可能需要数据的扩展和截断
操作没有专门的操作运算符,根据类型转换前后数据的长短确定位扩展还是截断。
扩展:短转长
无符号数:0扩展,前面补0
带符号整数:符号扩展,前面补符
截断:长转短
强行将高位舍弃,可能发生溢出
总结:c语言中的基本数据类型及其基本运算类型
基本数据类型:
无符号数、带符号数、浮点数、位串、字符(串)
基本运算类型:
算术、按位、逻辑、移位、扩展和截断、匹配。
计算机实现高级语言中的指令:
将各类表达式编译(转换)为指令序列
计算机直接执行指令来完成运算
补码的加减运算公式
[A+B]=[A]+[B](mod2n
[A-B]=[A]+[-B] (mod2n
利用带标志加法器,可构造加减运算器,进行以下运算:
无符号整数加、无符号整数减
带符号整数加、带符号整数减
在整数加/减运算器部件的基础长,加上寄存器、移位器以及控制逻辑,就可以实现ALU、乘/除运算以及浮点运算电路。
在这里插入图片描述
当Sub为1时,做减法。当Sub为0时,做加法。
ZF:零标志
SF:符号标志
OF:溢出标志
CF=Co⊕Sub:进/错位标志
算术逻辑部件ALU:
进行基本的逻辑运算与基本算术运算
1.无符号整数加减
2.带符号整数加减
3.与或非异或等逻辑运算
核心电路时整数加减运算部件
输出除了和/差,还有标志信息。
有一个操作控制端(ALUop),用来决定ALU所执行的处理功能。ALUop的位数k决定了操作的种类,例如,当位数k=3时,ALU最多只有33=8种操作。
在这里插入图片描述
在这里插入图片描述
指针、地址等通常被说明为无符号整数,因而在进行指针或地址运算时,需要进行无符号整数的加减运算。
无符号整数和带符号整数的加减运算电路完全一样,这个运算电称为整数加减运算部件,基于带标志加法器实现。
最基本的加法器,只有n位,时一种模2n运算系统。
n位加法器无法用于两个n位带符号数(补码)相加,无法判断是否溢出。
程序中经常需要比较大小,通过(在加法器)中做减法得到标志信息来判断
在这里插入图片描述
溢出标志OF
OF=VN⊕Cn-1
符号标志SF
SF=Fn-1
零标志ZF=1当且仅当F=0;
进位/错位标志CF:
CF=Count⊕Cin
所有算术运算都基于加法器实现
加法器不知道所运算的是带符号数还是无符号数。
加法器不判断对错,取低n位作为结果,并生成标志信息。

发布了74 篇原创文章 · 获赞 15 · 访问量 4094

猜你喜欢

转载自blog.csdn.net/V2636011127/article/details/105295689