C语言数据类型浮点型

**

C语言数据类型浮点型

**

写博文打卡第二波。今天记下C语言的浮点数据类型。
浮点数据类型:单精度(float)和双精度(double)。两者的原理是一样的。

1. 第一步:如何求解原码、反码、补码
我们以8位计算。
正数的原反补都是一样的,所以只要把十进制转成二进制就行。
如:68 =>
128 64 32 16 8 4 2 1
0 1 0 0 0 1 0 0
通过相减比较【逐一跟64,32…这些数比较,大于相减填1;小于填0,直到结束】的方式得到:01000100

负数:
反码 = 除符号位,其余取反
补码 = 反码+1
如:-45
128 64 32 16 8 4  2 1 【128的位置是符号位,无需 比较】
 1    0    1   0  1  1 0 1     原码
 1     1   0   1  0  0 1 0     反码
 1     1   0    1  0 0  1 1    补码  

如:-127
128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 1
-128 的补码这么暂时不进行深究。

2、第二步:了解浮点数在计算机中的存储方式
float 型:4个字节,即有32位。
浮点数的存储方式:符号位 1位+ 阶码[指数位] 8位+ 尾数23位;
//尾数域的最高有效位总是1,由此,该标准约定这一位不予存储,而是认为隐藏在小数点的左边,因此,尾数域所表示的值是1.M(实际存储的是M),
//这样可使尾数的表示范围比实际存储多一位 24(wei)

//==十进制小数转成二进制小数==
//如173.8125

//(173)10  =>   10101101
//(0.8125)10   =>  1101    不断的*2,取整
//  10101101.1101

//求8.25在计算机的存储表示
//8.25(10) => (1000.01) 2 => 1.00001*2^3 =》转成科学计数法 3为指数 00001为尾数
//0 符号位
// (偏移量+指数) 127+3 = 130 => 10000010
// 尾数 00001000000000000000000 【1.后面的那些数】
//即: 0 10000010 00001000000000000000000
符号位 (0) + 指数(10000010) + 尾数(00001000000000000000000)
这就是浮点数在计算机中的表示方法。

3、第三步:一些常用的写法
//2.1E5 => 2.110^5
//3.2e-2 => 3.2
10^-2

在linux搭建php环境:https://study.163.com/course/introduction/1209187856.htm

你可能感兴趣的:(C语言)