数的表示

数的表示

1.无符号数,略
2.有符号数:有符号数的机器表示有原码,补码,反码,移码
3.定点整数:小数点在最右边,相当于没有,最高位是符号位,其实就是有符号整数
4.定点小数:小数点在左边符号位之后,只能表示-1到1之间的小数

原码:

正数: 表示正数的情况下,原码的表示就是真值
负数: 表示负数的情况下,原码最高位为1,其余位是真值的绝对值
0值: 原码表示的0有2种,0000和1000都表示0

补码:

正数: 表示正数的情况下,补码的表示和原码相同,也是真值
负数: 表示负数的情况下,补码最高位为1,其余位在原码的基础上取反+1
0值: 补码表示的0只有一种,就是0000,负数比正数多一个
**移位:**带符号位右移一位,符号位正补0负补1表示除二操作
模4补码: 用两位表示符号,00表示正,11表示负

反码:

**正数:**表示正数的情况下,反码的表示和原码相同,也是真值
**负数:**表示负数的情况下,反码最高位为1,其余位在原码的基础上取反
0值: 反码表示的0有2种,0000和1000都表示0

移码:

**用途:**用来表示浮点数的阶码,
**数值:**正负数都是用真值加上一个偏置值得到,最高位1表示正0表示负
0值: 移码表示的0有1种,0000和1000都表示0

定点数的运算:

算数移位: 对于有符号数的移位运算
1.在移位过程中,符号位要保持不变
2.对于正数,原码,补码,反码都等于真值,移位后空位均补0
3.对于负数,空位填补规则为:
原码:左右移都补0;
补码:左移补0,右移补1;
反码:左右移都补1;
逻辑移位: 可以看做对无符号数的移位运算
规则是,左移时高位移丢,低位补0;右移时低位移丢,高位补0;
循环移位:

溢出判断:

1.一位符号位:
因为无论加减都是采用加法器实现的,所以只要参加运算的两个数字符号相同,但计算结果与操作数不同,就说明结果溢出
2.双符号位:
用两位表示符号位,00和11表示无溢出,01表示正溢出,10表示负溢出

浮点数:

组成: 浮点数由符号位+阶码(移码表示)+尾数(补码表示)表示
规格化: 浮点数规格化意思是调整解码和尾数的值,使得尾数最高位保证是一个有效值;这里的有效值意思是,对于原码,1是有效值,对于负的补码,0是有效值
左规: 尾数左移一位,阶码减1;
右规: 尾数右移一位,阶码加1;尾数溢出时需要右规

浮点数类型:

float类型:
float浮点数共4字节32位,其中1位符号位,8位阶码位,23位尾数位,阶码偏置127
其中解码的全0和全1不能使用,取值范围是-126到127,共256-2=254个值
其中阶码全0表示非规格化数,阶码全1表示无穷大数
double类型:
double浮点数共8字节64位,其中1位符号位,15位阶码位,52位尾数位,阶码偏置1023

浮点数的加减运算过程:

1.对阶: 将阶码较小的操作数进行右规,使得两个操作数阶码相同
2.尾数求和: 将尾数进行求和,阶码不变
3.规格化: 如果尾数发生了溢出需要进行一次规格化

你可能感兴趣的:(数的表示)