长整数和浮点数

Din*_*esh 5 c c++ architecture floating-point types

如果Long Integer和float都需要4个字节存储在内存中,那么为什么它们的范围不同?

min*_*gos 12

整数存储如下:

  • 符号为1位(+/-)
  • 该值为31位.

浮动的存储方式不同,以牺牲精度为代价提供更大的范围:

  • 符号为1位(+/-)
  • 尾数为S的N位
  • 指数E的M位

Float以指数形式表示:(+/-)S*(base)^ E.

顺便说一下,"long"并不总是32位.看到这篇文章.

  • 整数通常不与符号位一起存储,它们通常存储在两个补码中 - http://en.wikipedia.org/wiki/Two%27s_Complement (4认同)
  • 我赞成,但在每个"是"和"是"之后,我都错过了"通常"这个词. (2认同)
  • "1位符号,31位实际值"不适合2s补码 - 所有位都是实际值的一部分,即使第一位可用于查找数字的符号. (2认同)