二进制 / 变量 / 数据 / 编程语言 · 2023年 10月 11日 0

数据的二进制形式

197 次浏览

研究数据的二进制形式可深入理解计算机如何存储数据,以此可以优化、改进甚至创造新的存储方法。

整数

有符号数和无符号数看起来是两种数,其实计算机根本不知道它们的区别。CPU只知道二进制位,你说当有符号数那就是有符号数,你说是无符号数就是无符号数。有人会问,那为什么用int或者unsigned计算从来没出错过?CPU应该了解的呀! 事实是,CPU确实不了解,它只是简单的按照类似1+1=0(进位)这种计算方式计算而已。为了给程序员更多计算结果信息,寄存器记录了数据计算之后的状态位,例如溢出位、符号位、Zero位等等,服务于je/jne等汇编指令做跳转判断。

  • -1有符号整数是UINT_MAX.

补码

整数一般按照补码存储,它有效地解决了符号位和数值大小都存在的“变量空间压缩”功能。即,将符号位至于整数二进制最高位,其余保存数值大小的相对信息。

  • C/ObjC/C++/Java/C#/Pascal 等。

浮点数IEEE754标准

大部分编程语言浮点数遵循此标准。

  • C/ObjC/C++/Java/C#/Pascal 等。

特例

  • JS的Number类型属于特例,所有的数字类型,无论是整数还是浮点数,都是按照IEEE 754标准以双精度64位浮点格式存储的。