c语言基础——01阶码

单精度浮点float占4字节32位,在内存中的表示方式为:

1.第1位表示符号位,0为正数,1为负数

2.中间8位表示为阶码,为了避免符号位占用阶码,所以阶码的初始值为127用e表示

3.后23位表示尾数,由整数的一部分二进制数+小数部分的二进制数组合而成。

下面进行举例:

以11.73为例:

整数部分:11

转换为二进制为:1011

小数部分:0.73

转换为二进制为:1011 1010 1110 0001 0100

0.73*2=1.46     1
0.46*2=0.92     0
0.92*2=1.84     1
0.84*2=1.68     1
0.68*2=1.36     1
0.36*2=0.72     0
0.72*2=1.44     1
0.44*2=0.88     0
0.88*2=1.76     1
0.76*2=1.52     1
0.52*2=1.04     1
0.04*2=0.08     0
0.08*2=0.16     0
0.16*2=0.32     0
0.32*2=0.64     0
0.64*2=1.28     1
0.28*2=0.56     0
0.56*2=1.12     1
0.12*2=0.24     0
0.24*2=0.48     0   

组合为:1011.1011 1010 1110 0001 0100

按照规范需将该数转换为1~2之间的小数即:

1.0111011 1010 1110 0001 0100*2^3

阶码即为:127+3

因此11.73转换为二进制的内存表示方法为:

0(符号位,表正数) 

100 0001 0(阶码,表130) 

011 1011 1010 1110 0001 0100(尾数,整数部分+小数部分)

最终结果为:

0100 0001 0011 1011 1010 1110 0001 0100

413B AE14

双精度浮点double占8字节,64位。

1.第1位表示符号位,0为正数,1为负数

2.中间11位表示为阶码,初始值为1023用e表示

3.后52位表示尾数,由整数的一部分二进制数+小数部分的二进制数组合而成

运算规则同单精度运算规则。

你可能感兴趣的:(C语言入门,c++)