问题描述
我最近正在阅读二进制补码并注意到,当处理非常接近极限的无符号整数(主要是足够大的 MSB 为 1 的数字)时,减法似乎仍然有效,即使有符号位应该仍然是填充实际号码信息。例如,取254和252,分别表示为8位的0b11111110
和0b11111100
。减法将采用 2 的 252 的补码,因此 0b11111110 + 0b00000100
给出了正确的结果 0b00000010 = 2
。为什么这会按预期工作?
PS.:我也注意到,如果我要取无符号数并将它们视为二进制补码形式,我会得到 -2 和 -4,它们会减去 2。是这可能是系统如何建立并最终被设计使用的结果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)