关于余数的符号位问题

前言

  • 在研究定点整数、浮点数除法(尤其是加减交替法)时发现一个问题——商的符号位可以由被除数和除数的符号位异或来确定,余数的符号位呢?
  • 例如,我们考察 -5/35/-3。根据机器内部除法的机制,先将符号位异或,剩余被除数和除数的绝对值进行相除,即两者都是 5/3,得到商为1,余数为2。
  • 此时问题出现了,我们知道商的符号位一定是1,即商 = -1,但余数的符号位呢?也可以由被除数和除数的符号位异或来确定吗?
    • -5/3 = -1 … -2
    • 5/-3 = -1 … 2
  • 显然,两个式子中余数的符号位不同,不能由被除数和除数的符号位异或来确定
  • 如何确定余数的符号位?

结论

  • 余数的符号位 = 被除数的符号位

思路

  • 观察一些式子,例如:
    • -5/3 = -1 … -2
    • 5/-3 = -1 … 2
    • -5/8 = 0 … -5
    • 5/-8 = 0 … 5
  • 容易发现余数的符号位都和被除数相同。
  • 是否可以将特殊情况广泛化?下面开始证明这个结论。

证明

  • 假设给定的式子是a ÷ b = c   . . .   r a \div b = c\ ...\ ra÷b=c ... r
  • 我们知道r = a − c × b r = a - c \times br=ac×b假定s = c × b s = c \times bs=c×b
  • 由于必然有∣ a ∣ > = ∣ s ∣ |a|>=|s|a>=s,故
    • 若a和s同号,a>0,s>0,则r>0;a<0,s<0,则r<0
    • 若a和s异号,a>0,s<0,则r>0;a<0,s>0,则r<0
  • 特殊情况:
    • a = s,则r = 0,此时无需考虑余数符号
  • 综上,证毕。

版权声明:本文为qq_29575471原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。