无符号数和有符号数
一.无符号数:
无符号数没有只有数值部分,将它转换为二进制数就可以按一定位数保持到寄存器或存储器中,如果存到寄存器中,寄存器的长度就是无符号数的长度
二.有符号数:
1.机器数与真值
机器数:保持在计算机里的数
真值:我们得到的真实数
有符号数在计算机存储时不会存储小数点,而是按一种小数点协议存储,小数存储在符号位后面,整数存储在数值后面。
2.原码表示法:
(1)定义:
整数
小数
小数正数的原码中开头的0表示符号位,和真值中的0表示的意义不一样
原码的特点:简单,直观,但进行加法操作时会出现歧义
要求 | 数1 | 数2 | 实际操作 | 结果符号 |
+ | + | + | + | + |
+ | + | - | - | 可+可- |
+ | - | + | - | 可+可- |
+ | - | - | + | + |
3.补码表示:
(1)负数补码:一个负数加上“模”就得到了该负数的补码
(2)正数补码:它本身
(3)补码定义:
整数
小数
注:当真值为负数时,补码可以表示为原码处符号位外每位取反,末尾加1得到,原码也一样。
4.反码表示:
定义:
整数
小数
5.移码表示:
定义:
6.定点表示:
定点机 | 小数定点机 | 整数定点机 |
原码 | -(1-2^-n) ~ -(1-2^-n) | -(2^n - 1) ~ +(2^n-1) |
补码 | -1 ~ +(1-2^-n) | -2^n ~ +(2^n-1) |
反码 | -(1-2^-n) ~ +(1-2^-n) | -(2^n-1) ~ +(2^n-1) |
7.浮点表示:
(1)浮点数表示形式:
s 代表浮点数的符号
n其位数反映浮点数的精度
m其位数反映浮点数的表示范围
j和m共同表示小数点的实际位置
(2)浮点数表示范围:
(3)浮点数的规格化形式:
r=2 尾数最高位为1
r=4 尾数最高2位不全为0
r=8 尾数最高3位不全为0
(4)浮点数的规格化:
r=2 左移 尾数左移1位,阶码减1
右移 尾数右移1位,阶码加1
r=4 左移 尾数左移2位,阶码减1
右移 尾数右移2位,阶码加1
r=8 左移 尾数左移3位,阶码减1
右移 尾数右移3位,阶码加1
基数r越大,可表示的浮点数的范围越大,精度越低
定点运算
一.移位运算
1.移位运算的数学意义
数学 15 m=1500 cm 解释:小数点右移2位
机器用语 15相对于小数点左移2位,小数点不动,计算机中数据的小数点固定,数据左右移动
2.算术移位规则
·符号位不变
码制 | 添补代码 | |
正数 | 原码,补码,反码 | 0 |
负数 | 原码 | 0 |
补码 | 左移添0 | |
右移添1 | ||
反码 | 1 |
小列:
a.机器字长8位,A=+26=+11010
移位操作 | 机器数 | 对应的真值 |
A原=A补=A反 | ||
移位前 | 0,0011010 | +26 |
左移一位 | 0,0110100 | +52 |
左移两位 | 0,1101000 | +104 |
右移一位 | 0,0001101 | +13 |
右移两位 | 0,0000110 | +6 |
左移真值变大两倍,右移变小两倍
b.机器字长8位,A=-26=-11010
移位操作 | 机器数 | 对应的真值 |
移位前 | 1,001101, | -26 |
左移一位 | 1,0110100 | -52 |
左移两位 | 1.110100 | -104 |
右移一位 | 1,0001101 | -13 |
右移两位 | 1,0000110 | -6 |
移位操作 | 机器数 | 对应的真值 |
移位前 | 1,1100110 | -26 |
左移一位 | 1,1001100 | -52 |
左移两位 | 1,0011000 | -104 |
右移一位 | 1,1110011 | -13 |
右移两位 | 1,1111001 | -7 |
移位操作 | 机器数 | 对应的真值 |
移位前 | 1,1100101 | -26 |
左移一位 | 1,1001011 | -52 |
左移两位 | 1,0010111 | -104 |
右移一位 | 1,1110010 | -13 |
右移两位 | 1,1111001 | -6 |
3.算术移位的硬件实现
4.算术移位和逻辑移位的区别
·算术移位 有符号数的移位,最高位表示符号,不参加移位
·逻辑移位 无符号数的移位,都参加移位,逻辑左移,低位添0,高位丢弃,逻辑右移,高位添0,低位添丢弃
例如: 01010011 10110010
逻辑左移:10100110 逻辑右移:01100100
算术左移:00100110 算术右移:11011001
(蓝色数位符号位,不参加移位运算)
二.加法减法运算
(1)补码加法运算:
整数 A补 + B补 =AB补 (mod2^n+1)
小数 A补 + B补 =AB补 (mod2)
(2)补码减法运算:
A-B=A+(-B)
整数 (A-B)补 =(A+(-B))补=(A)补+(-B)补 (mod2^n+1)
小数 (A-B)补 =(A+(-B))补=(A)补+(-B)补 (mod2)
(3)补码溢出判断:
a.一位符号位判断:
参加操作的两个数符号相同,其结果的符号位与原操作数的符号不同,即为溢出
或最高有效位的进位 + 符号位的进位=1则溢出
b.两位符号位判断:
结果的双符号位相同,未溢出 例:00,100 11,100
结果的双符号位不同,溢出 例:10,100 01,100
(在双符号位中,最高符号位代表其真正的符号)
(4)补码加减法的硬件配置:
加法器是核心,由它完成了两补码的运算,寄存器A中保存被加数,寄存器x保存加数或被减数,GA,GS是两个标记,如果做加法,GA置1,做减法GS置1,如果进行减法运算,求补控制逻辑可以完成B补码到(-B)补码的转换,然后可以用X硬件实行加1或直接用加法器进行加1操作
三.乘法运算