c - 使用浮点二进制格式的变量如何存储值 0.0

标签 c variables floating-point binary mantissa

基本上我现在很困惑,在 stackoverflow 或通过谷歌搜索找不到任何有用的东西。我一直在阅读有关计算机如何以二进制格式存储不同数据类型的内容,以更好地理解 C 编程和计算机科学的常识。我想我理解 float 是如何工作的,但是根据我的理解,小数点前面的第一位(或二进制点idk)不包括在内,因为它应该总是1,因为我们将小数点移到第一位后面从左到右的值为 1。 在这种情况下,由于我们不存储第一位,我们如何区分存储值 1.0 和 0.0 的浮点变量。

enter image description here

诗。如果需要,请随时编辑这篇文章。英语不是我的母语。

最佳答案

... first bit in front of ... binary point ... isn't included because it is supposedly always 1 ...

并非总是

使用常见的浮点格式,例如 float32 ,当有偏指数为 (0) 时,有效数(错误地称为尾数)的前导为 0 而不是 1。此时有偏指数encodes也不同。

“零”通常被编码为全零位模式。

            v--- Implied bit
0 11111110 (1) 111_1111_1111_1111_1111_1111 Maximum value (~3.4e38)
0 01111111 (1) 000_0000_0000_0000_0000_0000 1.0
0 00000001 (1) 000_0000_0000_0000_0000_0000 smallest non-zero "normal" (~1.18e-38)
0 00000000 (0) 111_1111_1111_1111_1111_1111 largest  "sub-normal" (~1.18e-38)
0 00000000 (0) 000_0000_0000_0000_0000_0001 smallest "sub-normal" (~1.40e-45)
0 00000000 (0) 000_0000_0000_0000_0000_0000 zero

-0.0,支持时与 0.0 相同,符号位位置为 1。

关于c - 使用浮点二进制格式的变量如何存储值 0.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71863999/

相关文章:

CGI.c文件打开

python - 关于 pandas.read_csv 的 float_precision 参数

excel - Excel 的工作表比较运算符是否给出不一致的结果?

c - 从 C 构建中排除未引用的函数?

c - 暴露动态 IP 后面的本地网络服务器

variables - 在 clojure 中定义多个常量变量

Python:从具有不同类型变量的文件中读取行

javascript - 如果名称通过 JSON 传递,如何访问内存中的变量?

javascript - 在 Javascript 中验证浮点精度

c++ - 有没有办法在信号量或输入事件发生之前阻塞单个线程?