正数的原码是其本身
负数的原码是保留符号位在按位取反
补码:
正数的补码与原码相同
负数的反码+1
数据在计算机中的表示
一、无符号数没有正负号的数
有符号数:
机器数:保存在计算机中的数
真值:平时用的带有正负号的数据
没有专门的硬件保存小数点,所有这是一个约定,约定小数点在符号位的后面
2.原码表示法
带符号的绝对值表示,
小数:
[x]=x 0<=x<1 正
1-x -1<x<=0 负
真值 原码
x=+0.1101(.前的0表示真正的数) 0.1101 (.前面的0表示符号)
x=-0.1101 x=1-(-0.1101)=1.1101
3.补码:
一个负数加上“模”即得该负数的补数。
一个正数和负数互为补数时,他们绝对值之和为“模”数。
已知补码求原码:
符号位不变,每位取反末尾+1
4.反码表示
整数:
正数的反码是其本身
负数的反码是按位取反
总结:
正数,原码=补码=反码
负数:原码
反码:保留符号位,其余按位取反
补码:反码基础+1
移码:符号位取反
负数:补码符号位取反
二、数的定点表示和浮点表示
数的定点表示:小数点按约定方式标出
定点机 小数定点机 整数定点机
浮点数:
N=S*rj S尾数 j阶码 r尾数的基值(计算机r取2,4,8,16)
例:r=2 N=11.0101
=0.110101*2^10 左移2位 j=10
=1.110101*2^1 左移1位 j=1
=1101.01*2^-10 右移2位 j=-10
=0.00110101*2^100 左移4位 j=100
对于浮点数计算机把浮点数拆分为3部分存储,尾数s,阶数j,尾数基值r
阶码(正负号)-阶码的数值部分-数符-尾数的数值部分
浮点数规格化:
左移右移
r=2 左规 尾数左移1位 阶码-1
右规 尾数右移1位 阶码+1
r=4 左规 尾数左移2位 阶码-1
右规 尾数右移2位 阶码+1
r=8 左规 尾数左移3位 阶码-1
右规 尾数右移3位 阶码+1
r值越大,可表示的浮点数的范围,个数越大越多
r值越大,浮点数精度越低
偏置指数:
给真正的指数+常数 32位机器 指数要加127
IEEE浮点数:
存储形式:符号位 指数 尾数
尾数总是规格化的,且最高位总是1,所以最高位的1没必要存储。
一个非0的IEEE浮点数:
X=(-1)^s * 2^e-b * 1.F
B=127
E:指数
S:符号位
F:尾数(1.3232)1.后面的数
IEEE754浮点数的格式:
数符 阶码(移码表示)尾数(原码表示)
移码 = 真值 + 偏置值((2^n-1)-1)
浮点数规格化:
1.6*2^16 约定的2和1.不在计算机中存储