xy0v0's Blog

xy0v0's Blog

判断 “无符号小于” 的方式

2025-03-15

对于无符号数 ​A​B ,判断 ​A < B 是否成立

  1. 首先对 ​ANOT​~A
  2. 将取反后的值与第二个输入  ​B  相加
  3. 检查是否有进位输出

我们可以利用补码的性质来判断:

\text{NOT}(A) + 1 = 2^n - A

​n=8

接下来对 ​A<B进行变形:

A < B \Rightarrow A - B < 0 \Rightarrow A + (-B) < 0

现在等价于检查 ​A+\text{NOT}(B)+1 的最高位是否为 1,而又有:

\text{NOT}(A) + B = (2^n - 1) - A + B = (2^n - 1) + (B - A)

​B > A时,​(B - A) > 0​\text{NOT}(A) + B 必定产生进位,由此说明该方案可行