在大多数比汇编更高级别的语言中,整数变量具有带符号或无符号的特性。在 C 中,“无符号短”作为数据类型。我能想到的所有语言,C 系列或 Pascal 派生的新语言,如 Go,都有这样的数据类型。(有些不提供未签名,只是签名,但不要介意那些。)
基本事实是,我研究过的所有 CPU 都具有与操作相关的符号,或者在操作之后选择分支操作码。有有符号右移和无符号右移操作码。有符号和无符号整数都经过相同的算术电路,因为 1 和 0 的结果相同。进位和溢出标志得到调整。当编译器根据符号表和它建立的变量属性选择进位分支与溢出分支或类似选择时,就会出现区别。
只是好奇,因为我喜欢接近硅的语言 - 是否有任何更高级别的语言,比如在 C 级别以上,整数值没有使用任何有符号/无符号属性键入?
我知道 Java 中的 >>> 运算符。这是我所要求的一个小例子,但想知道是否有语言(可能晦涩难懂)彻底使用不同的运算符而不是有符号/无符号的不同数据类型。
(有点相关的是任何语言是否提供访问 CPU 的 C 或 O 标志的问题,所以你可以自己动手做。)