我正在读一篇关于整数安全性的文章.这是链接:http: //ptgmedia.pearsoncmg.com/images/0321335724/samplechapter/seacord_ch05.pdf
在页166中,有说:
涉及无符号操作数的计算永远不会溢出,因为无法由结果无符号整数类型表示的结果以模数减少为大于可由结果类型表示的最大值的数.
这是什么意思?感谢您的回复.
我正在设计一个简单的玩具指令集和随附的模拟器,并且正在尝试找出支持哪些指令。在算术方面,我目前有无符号加法、减法、乘法和除法。但是,我似乎无法找到以下问题的明确答案:哪些算术运算符需要签名版本,哪些算术运算符的无符号和补码签名版本等效?
例如,1111 的补码等于 -1。如果你加 1 并假装它是一个无符号数,你会得到 0000,即使将其视为 -1,这也是正确的。然而,这对所有数字都适用吗?那么其他三个运算(减法、乘法、除法)呢?
当有时我的代码将某个值视为已签名时,我会感到非常困惑,有时它会在比较值时将其视为无符号值.代码如何知道值是有符号还是无符号?