【问题标题】:how to find the remainder of division如何找到除法的余数
【发布时间】:2013-10-30 20:23:44
【问题描述】:

Q=A/B , Q 是一个实数,表示为一对 8 位:

  • 整数部分的最高有效 8 位
  • 小数部分的最低有效 8 位
  • 号码无符号

例如:

0 0 1 0 1 1 0 1 。 0 1 0 1 0 0 0 0

如果你知道 B,你能在纸上找到除法的余数吗?怎么样?

我举个例子:

2/172:

0000 0010 。 0000 0000 /

1010 1100 。 0000 0000

=0000 0000 。 0001 0010

0000 0000 。 0001 0010 *

1010 1100 。 0000 0000

=0000 0000 。 1100 0001(应该是 2,或者至少大于 1.5)

【问题讨论】:

  • 这个问题和编程有什么关系?就因为涉及到二进制?
  • 我正在尝试在 Verilog 中做某事,但我无法使用 ceil 或 floor 函数...它们无法合成
  • 要找到余数,除了B,你还必须知道A或Q。你知道哪个?
  • A、B、Q我都认识
  • 那么A-B*floor(Q)不给你答案吗?鉴于您的陈述,floor(Q) = Q & 0xFF00(即清除 8 个 LSB)。

标签: math binary


【解决方案1】:

有两种算法:恢复和不恢复。这在Division Algorithms and Hardware Implementations by Sherif Galal and Dung Pham 中有很好的描述。 here 是关于 VHDL 的实现。

【讨论】:

    猜你喜欢
    • 2011-10-23
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2014-12-06
    • 2016-08-11
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    相关资源
    最近更新 更多