Language agnostic 学习按位运算的资源?

Language agnostic 学习按位运算的资源?,language-agnostic,bitwise-operators,Language Agnostic,Bitwise Operators,最近有人问我一个问题,“如何在不使用乘法运算符、不使用任何循环语句或显式加法的情况下进行乘法”,我意识到我根本不熟悉按位运算 显然有,但我需要一些更适合新手的解释。还有这个,但我还没有完全掌握 我不介意你指出书中的一章,因为我可以通过游猎书籍和其他资源找到一个很好的图书馆。,第2卷-半数值算法,第2卷-半数值算法,问题的关键在于“半加法器”和“全加法器”。半加法器将两位输入相加以产生一位结果和一位进位。全加器将三位输入(两个正常输入加上一个低位进位)相加,生成一个单位结果和一个单位进位 在任何情

最近有人问我一个问题,
“如何在不使用乘法运算符、不使用任何循环语句或显式加法的情况下进行乘法”
,我意识到我根本不熟悉按位运算

显然有,但我需要一些更适合新手的解释。还有这个,但我还没有完全掌握


我不介意你指出书中的一章,因为我可以通过游猎书籍和其他资源找到一个很好的图书馆。

,第2卷-半数值算法,第2卷-半数值算法

,问题的关键在于“半加法器”和“全加法器”。半加法器将两位输入相加以产生一位结果和一位进位。全加器将三位输入(两个正常输入加上一个低位进位)相加,生成一个单位结果和一个单位进位

在任何情况下,结果都基于加法的真值表。对于半加法器,即:0+0=0,0+1=1,1+0=1,1+1=0+进位

因此,结果的“正常”部分是输入的异或。结果的“进位”部分是输入的AND。一个全加器基本上是一样的,但留下了臭名昭著的“读者练习”

把它们放在一起,用半加法器计算最低有效位,用全加器计算其他位,将N位输入相加


一旦你能做加法,有几种方法可以做乘法。简单(也是慢)的方法是把N加到自己的M次上。速度越快(但有点难理解)方法是移位和加法。例如,Nx5=Nx4+Nx1。您可以通过将N向左移位L位来生成NxB,其中B=2L。

这一点的关键归结为“半加法器”和“全加法器”。半加法器将两位输入相加以生成一位结果和一位进位。全加法器将三位输入相加(两个正常输入加上一个低位进位)产生一个单位结果和一个单位进位

在任何情况下,结果都基于加法的真值表。对于半加法器,即:0+0=0,0+1=1,1+0=1,1+1=0+进位

因此,结果的“正常”部分是输入的XOR。结果的“进位”部分是输入的AND。一个全加器几乎是一样的,但留下了臭名昭著的“读者练习”

把它们放在一起,用半加法器计算最低有效位,用全加器计算其他位,将N位输入相加


一旦你能做加法,有两种方法可以做乘法。简单(也是慢)的方法是把N加到自己的M倍。更快(但更难理解)的方法是移位和加法。例如,Nx5=Nx4+Nx1。你可以通过将N向左移位L位来产生NxB,其中B=2L。

Ha!
a*B=ln(exp(a)^b)
。根本没有乘法、循环或加法!=)考虑到问题的主题,我把Jens的评论读为ln(exp(a)XOR b,并质疑它是如何工作的。太糟糕了exp(a)是一个浮点值,没有定义位运算…:-PHa!
a*b=ln(exp(a)^b)
。根本没有乘法、循环或加法!=)考虑到问题的主题,我把Jens的评论读为ln(exp(a)XOR b)并质疑这是如何工作的。太糟糕了exp(a)是一个浮点值,未定义位运算…:-PTAOCP无疑是一本传奇性的书。我喜欢阅读那些讨论任意精度整数的章节。不幸的是,我知道的所有资源,包括TAOCP,都假定可以对基本类型进行算术运算。我认为他应该找一本关于数字逻辑的教科书。TAOCP肯定是一本传奇性的书。我喜欢阅读那些讨论任意精度整数的章节。不幸的是,我知道的所有资源,包括TAOCP,都假定可以对基本类型进行算术运算。我认为他应该找一本关于数字逻辑的教科书。