按位算术教程

时间:2012-02-17 00:43:03

标签: c bit-manipulation bitwise-operators biginteger

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

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

我必须学习哪些基本知识?我在Google上搜索过,但是我找不到很多很好解释的教程。或者更准确地说,我不知道我必须使用哪些关键字。

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

3 个答案:

答案 0 :(得分:1)

一周前,当我在Stack Overflow上闲逛时,我找到this article,也许这可以帮助你。

不幸的是,我没有在我发布的第一个链接上看到算术运算。

对于算术运算,请查看here

电子与编程相同,概念相同,因为逻辑门=逻辑运算操作。在该链接的“另见”部分,有更多的帮助。 (特别是二进制乘数)

如果你成功了解自己正在做的事情,请告诉我,我也希望了解它是如何运作的。

答案 1 :(得分:1)

您感兴趣的主题称为任意精度算术。

可在此处找到更多信息:http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic

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

答案 2 :(得分:0)

实际上没有按位算术(加,减等),但你可以使用按位运算(AND,OR,XOR,逻辑左移,逻辑右移,算术右移)来实现它们。

请参阅:http://en.wikipedia.org/wiki/Bitwise_operation