浮点型数据是用来表示具有小数点的实数de。在c中,实数是以指数形式存放在储存单元中的。一个实数表示为指数可以有不止一种形式,如3.14159×10^0,0.314159×10^1……它们代表的是同一个值。可以发现,小数点的位置改变从而改变了指数的值,就不改变它们值的大小。由于小数点的位置可以浮动,所以实数的指数形式称为浮点型。
浮点型的类型包括float(单精度浮点型)double(双精度浮点型)long double(长双精度浮点型)。
float(单精度浮点型)。编译系统为float分配了四个字节大小的空间。每个字节八个bit。一共有32个比特,第一个比特位是符号位,中间八位是移吗,后23位是尾码。简单的表示就是1+8+23的形式。
例如:12.25的浮点表示
先将12.25化成二进制 12.25→1100.001 *这里要注意的是小数点的移动,移动到第一个1的后面,这里需要往左边移动,一般参考的是给127加减,左移需要给127加上小数点的移动个数。127是怎么来的,是老师上课讲的。
127的二进制 0 0 111 1111
+
3的二进制 0 000 0011
= 0 1 000 0010 ( 100 001)/*将小数点移动后的剩余的补上 0000000
十六进制 0x41 43 00 00 But 在c中都会把单精度转化位双精度来计算。(就是进行编译时浮点型常量都会被系统按照双精度处理)
double(双精度浮点型)和单精度类似 ,只不过双精度是8个字节,简单的表示就是1(符号位)+11(移码位)+52(尾码位)基本上与float是类似的。long double分配了十六个字节。
我目前知道的就这点。以后会的会往里面加。