【问题标题】:bitwise arithmetic tutorial按位算术教程
【发布时间】:2012-03-08 10:43:20
【问题描述】:

我正在寻找有关按位算术运算的教程,例如加法、减法、乘法和除法,也许还有其他更复杂的运算符,例如模数、逆模数等。

实际上,我正在尝试为没有此类库的嵌入式系统实现一个大数字库。所以我想学习如何处理有符号的大整数以及如何通过操作位来进行算术计算。现在我唯一的想法是将我的大整数保存在一个大 uint8_t 数组中,其中 1 位保留用于符号。例如,如果我需要一个 160 位整数,那么我需要一个数组 uint8_t num[21]

我必须学习哪些基本知识?我在谷歌上搜索过,但我没有找到很多解释清楚的教程。或者更确切地说,我不知道我必须使用哪些关键字。

所以我需要你的建议。如果您知道我在哪里可以找到有趣的教程,请在此处发布链接。 PDF、网页、视频什么的。

【问题讨论】:

  • 谷歌和维基百科应该会有所帮助。
  • 你打算用c写这个库吗?如果是,我不明白你为什么需要知道如何通过操作位来进行算术计算......组合电路的话题很大,而且并不总是微不足道的......或者我可能只是误解了你的问题。
  • 也许看看GNU MP,这是一个用C实现的bignum库。
  • @Saphrosit 不在 C 中,但我会先尝试使用 C,熟悉算法即可。
  • 只进行位运算的算术运算效率非常低

标签: c bit-manipulation bitwise-operators biginteger


【解决方案1】:

一周前,当我在 Stack Overflow 上闲逛时,我发现了this article,也许这对你有帮助。

很遗憾,我在发布的第一个链接上没有看到算术运算。

对于算术运算,请查看here

电子和编程一样,概念一样,因为逻辑门=逻辑运算操作。在该链接的“另请参阅”部分中,还有更多帮助。 (尤其是二进制乘法器)

如果你在你所做的事情上取得成功,请私信我,我也想了解它是如何工作的。

【讨论】:

  • 非常感谢,您的第一个链接也很有帮助。
【解决方案2】:

确实没有按位算术(加法、减法等)之类的东西,但您可以使用按位运算(AND、OR、XOR、逻辑左移、逻辑右移、算术右移)来实现它们。

见:http://en.wikipedia.org/wiki/Bitwise_operation

【讨论】:

    【解决方案3】:

    你感兴趣的话题叫做任意精度算术。

    更多信息可以在这里找到:http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic

    就“基础知识”而言:您将需要学习执行算术的算法。您还需要对动态内存管理有相当的了解。我怀疑您使用数组的方法可能非常笨拙和浪费。

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 1970-01-01
      • 2011-04-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多