计算机中的整数表示 - C.

Sla*_*mac 3 c binary

C是否定义整数的二进制表示,例如一个,二个补码......或者这个表示处理器(计算机或其他东西)是否依赖?

用C编写的代码的例子:

short a = -5;
Run Code Online (Sandbox Code Playgroud)

我在哪里需要了解哪些a是两个补码1111 1111 1111 1011或有符号位表示1000 0000 0000 0101

Ale*_*nze 6

C支持有符号整数的以下三种表示:

  • 2的补充(最常见的,你不太可能在实践中看到其他人)
  • 1的补充
  • 登录和幅度

C还允许在表示中存在一些填充(非值)位,这在实践中也是非常罕见的.

C没有定义整数是应该以大端还是小端或者其他字节顺序存储在内存中.

如果要了解在特定平台上如何表示完整的整数,则需要分析底层内存.此外,如果-INT_MAX == INT_MIN + 1,你有2的补码表示,否则它是不确定的,它是三个中的哪一个.

我认为现在假设没有填充位并且表示是2的补码是安全的.


Mic*_*ers 5

它是平台相关的,与小/大端的相同.此外,某些类型的数量大小取决于平台.