初学编程不是很懂,明明说指数部分占8位,那范围不是应该是2^7~2^7-1(即-128~127)吗???
阶码 E = 指数 e + 偏移量。
IEEE754 中规定:
当阶码 E 为全 0,且尾数M 也为全 0 时,表示数值 X = ±0。
当阶码 E 为全 1,且尾数M 也为全 0 时,表示数值 X 为 ±∞。
那么,在其他时,阶码 E,只能取 254 个值:1~254。
但是,指数 e 是八位补码,共有 256 个值:-128~127。
必须抛弃两个 e 值。
偏移量,真不好选:
如果选 128,指数 e 中的-128 就不能用了。
如果选 127,指数 e 中的-128、-127 就都不能用了。
否则,将会出现 E 为全 0 或 E 为全 1。
IEEE 选择了 127。
这就是抛弃了 e 的-128 和-127。
那么, e 的范围,就只有-126 ~ 127 了。
这样选,造成的误差,显然较小。
float的指数范围为-127~+128,为什么是-127到+128啊?
float类型用一个字节作为指数部分。指数部分不能是无符号的,不然就无法表示小数了。可以大概解释一下这部分的数学,假如指数部分是x,整数部分是y,那么这个float表示的数字是n = y * 2^x,y是整数,如果x >= 0,那么2^x也是整数,那么两个整数的乘积当然还是整数了。既然指数部分是有符号的,那...
在C语言中float数据数值范围是多少?
C语言中,float 为单精度浮点数,占4字节,其数值范围为3.4E-38 ~3.4E+38或者-(3.4E-38 ~3.4E+38)float的指数位有8位,尾数位有23位,符号位1位。于是,float的指数范围为-127~+128,按补码的形式来划分。其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所...
java中float类型变量取值范围
float占用4个字节,和int是一样,也就是32bit.第1个bit表示符号,0表示正数,1表示负数,这个很好理解,不用多管.第2-9个bit表示指数,一共8为(可以表示0-255),这里的底数是2,为了同时表示正数和负数,这里要减去127的偏移量.这样的话范围就是(-127到128),另外全0和全1作为特殊处理,所以直接表示-1...
关于c#中 float类型的取值范围
于是,float的指数范围为-127~128,而double的指数范围为-1023~1024,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3...
c语言中计算int,float,double,char四种数据类型所能表示的数据范围
float为单精度浮点型,能准确到小数点后六位,3.4 x 10^(-38)~ 3.4 x 10^(+38)double为双精度浮点型,能准确到小数点后十二位,1.7 x 10^(-308)~ 1.7 x 10^(+308)char为单字节字符型,-(2^7)到2^7-1即-128到127。如果是无符号字符unsigned char,那么是0到2^8-1...
float类型可表示的范围为什么那么大?
下面进行具体计算,小数部分能表示的最大值是1+1\/2+1\/4+1\/8+……=2 , 指数部分的表示范围是0到255 , 减去127之后就是 -127到128 其中-127和128保留其他用途,实际范围就是-126到127。最终结果就是2*2^127 = 3.4*10^38。再加上符号位就是-3.4*10^38到+3.4*10^38。没想到...
如何理解浮点型float数据类型在内存中的取值范围根据指数算出来的?
指数不是补码格式的,是使用(始终大于等于0的)移码表示,这样便于比较浮点数的大小。对于32位二进制小数,指数的范围用移码表示是从0到255。其中,1至254用于表示规格化数,把它减去127,得到真实的指数值(-126至127);255用于表示正、负无穷大;0用于表示0或非规格化数(即绝对值特别小的,在数轴...
单双精度浮点的数值范围怎么确定的,详细点…谢了
对于单精度浮点数(float)来说,有一位符号位,指数位共8位,尾数共23位。指数能够表示的指数范围为-128~127。尾数为23位。当尾数全1时再加上小数点前面的1,指数取到最大正数127(8位,正数最大127,负数最小-128),浮点数取得正数的最大值。 +1.111111111111111111111*2^127(1.后面23个1,...
为什么float是单精度的,用4个字节储存,能得到的确是6~7位有效数
指数部分 占用8-bit的二进制数,可表示数值范围为0-255。 但是指数应可正可负,所以IEEE规定,此处算出的次方须减去127才是真正的指数。所以float的指数可从 -126到128. 底数部分实际是占用24-bit的一个值,由于其最高位始终为 1 ,所以最高位省去不存储,在存储中只有23-bit。 到目前为止, ...
为什么float在vc中分配了4个字节,却可以输出像1.123456这样的8字节...
float是指数计数的,指数范围为-127~128,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38 float:2^23 = ...