【发布时间】:2013-10-03 05:01:11
【问题描述】:
我需要用 12 位无符号数做一些加/减。
对于无符号的 12 位整数:
x = 0111 1000 0101, x = 1925
y = 1011 1100 0100, y = 3012
z = x+y = ?
z = x-y = ?
我得到了 x + y 的 0011 0100 1001
但是我应该为 x - y 做什么?
答案是否定的,它不作为 unsigned int 存在。
【问题讨论】:
-
在无符号整数的世界中,
x - y其中x < y在技术上是下溢条件。不管有多少位代表一个数字系统,这都是正确的。如果你想做像 C 这样的语言可能会做的事情,只需做减法并忽略高于第 12 位的任何位。但它仍然是一个下溢。