数据的机器级表示与处理
文章目录
机器数的表示方式
原码
原码的表示第一位为符号位,其余位为2进制数表示真值
优点: 与真值的对应关系直观、方便
缺点:
-
0的表示不唯一,如:0000…0 1000.0000都能表示0
2. 原码加减运算不方便
表示范围: − 2 n − 1 + 1 ≤ X ≤ 2 n − 1 − 1 -2^{n-1}+1\le X\le 2^{n-1}-1 −2n−1+1≤X≤2n−1−1
补码
在计算机中,补码用来表示带符号整数
正数的补码符号为0,数值部分是它本身
负数的补码表示为数值部分取反加1
求真值时负数的数值位取反加1
优点:
- 0的表示唯一
- 将减法变成加法运算,更方便
真值转换:将补码的数值位取反加1
表示范围: − 2 n − 1 ≤ X ≤ 2 n − 1 − 1 -2^{n-1}\le X\le2^{n-1}-1 −2n−1≤X≤2n−1−1
反码
正数各位取反得到反码
负数的反码是补码表示中末位减1
缺点:0的表示不唯一
表示范围: − 2 n − 1 + 1 ≤ X ≤ 2 n − 1 − 1 -2^{n-1}+1\le X\le 2^{n-1}-1 −2n−1+1≤X≤2n−1−1
移码
用移码表示浮点数的阶
优点:简化了对阶操作
无符号数 有符号数大小的比较
在C语言中,如果执行一个运算时,同时有无符号整数和带符号整数参加,则C语言会按无符号整数进行运算
浮点数的表示
规格化:在浮点数的运算中,要对浮点数进行规格化操作
0表示:在IEEE标准中,浮点数的0表示不唯一,有正0和负0。阶码为0,尾数为0。符号位可不同
无穷:阶码全为1,尾数为0,符号位决定正负无穷
NaN:阶码全为1,尾数不为0即可
非规格化数:阶码全为0
数据的存储和排列顺序
最低有效位:数的最低位
最高有效位:数的最高位
大端方式:将数据的最高有效字节放在小地址单元(符合人的习惯)
小端方式:将数据的最高有效字节放在大地址单元
位扩展运算和位截断运算
长数大到短数无法表示的程度
扩展时有有符号扩展和无符号扩展