storage - 计算机如何区分一个整数是有符号的还是无符号的?

标签 storage unsigned signed

设置二进制补码是为了让计算机更容易计算两个数的减法。但是计算机如何区分一个整数是有符号整数还是无符号整数呢?
它的内存中只有 0 和 1。

例如,1111 1111在计算机内存中可以代表数字255,也可以代表-1。

最佳答案

有符号和无符号使用相同的数据,但不同的指令。

计算机将有符号和无符号整数存储为相同的数据。即255 和 -1 是相同的位。但是,您告诉编译器变量的类型。如果它是有符号的,编译器会使用有符号的运算符来操作变量(例如 IDIV),如果是无符号的,则它会使用另一条指令(例如 DIV)。所以编译器制作了一个程序,告诉 CPU 如何解释数据。

关于storage - 计算机如何区分一个整数是有符号的还是无符号的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10893232/

相关文章:

google-app-engine - 谷歌应用引擎中db和ndb的优缺点

C++ - 无符号整数

c - C中的 "uns"是什么?

c++ - C++ 中的有符号或无符号整数

java - 如何使用 MSI 从 Java 向 Azure 存储进行身份验证?

Laravel 在生产服务器中的存储路径

android - 创建表时出错

C 编译器无法识别 unsigned long

java - 在 Java 中将 Signed Int 值转换为 Unsigned String 值

java - "Do you want to run this application"JNLP 对话框 - 再次显示对话框的条件