当前位置:首页 > 内存 > 正文

0的浮点数表示在内存中

  • 内存
  • 2024-09-03 12:53:17
  • 3663

一、浮点数在内存中的表示方法浮点数存储的字节格式如下:
地址
+0
+1
+2
+3
内容

EEEE
EMMM
MMMM
MMMM
MMMM
MMMM
MMMM
这里
S
代表符号位代表,1为负,0为正
E
偏移量的127次方,二进制指数码=(EEEEEEEE)-127。
M
24位尾数存储在23位中,只存储23位,最高位设置为1。该方法使用最少的比特数来获得较高的有效比特数,提高精度。
零是特定值,幂为0
尾数也是0。
浮点数-12.5以十六进制数0xC1480000的形式存储在内存区域中。该值如下:
地址
+0
+1
+2
+3
内容0xC1
0x48
0x00
0x00
浮点数和十六进制等效存储值之间的转换相当简单。下面的例子展示了如何转换上面的值-12.5。
浮点存储值没有直接的格式。要将其转换为浮点数,必须按照上面的浮点存储格式表中列出的方式分隔位。
例如:
地址
+0
+1
+2
+3
格式
SEEE
EEEE
EMMM
MMMM
MMMM
MMMM
MMMM
MMMM
二进制
11000001
01001000
00000000
00000000
十六进制
C1
48
00
00
从本例中可以得到如下信息:
符号位为1
表示负数
幂次方二进制为10000010或十进制格式的130。130减127就是3,这就是实际的幂。
尾数是如下二进制数100100000000000000000
尾数左边省略了小数点和1。存储浮点数时,经常会省略1个点
在尾数的开头,尾数的值确定如下:
1.1001000000000000000000
然后根据指数调整尾数。负指数将小数点向左移动。正指数将小数点向右移动,因为
指数为3。尾数调整如下:
1100.1000000000000000000
结果是二进制浮点数的左侧。小数点表示该位置的2的幂,例如:1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)。)=12。
小数点右边也代表该位置2的幂,但幂为负。例如:.100...表示(1*2^(-1))+
(0*2^(-2))+(0*2^(-2))...=0.5.
这些值的总和是12.5。由于符号位设置为表示该数字为负数,因此十六进制值表示0xC1480000-
12.5。
二、float在vertical语法里面是用什么类型因为比赛的信息会有所波动。
Float是C语言最重要的字符类型之一,更精确地表示浮点数的单点。C语言建议每种类型的浮点数在内存中应恰好保存4个字节,精度为7位,扩展的值为:3.4*10^-38~3.4*10^38或-(3.4*10^-38~3.4*10^38)。
内存中的浮动文件遵循IEEE754标准。在C/C++中,浮点类型需要4个字节或32分钟。0代表正数,1代表负数