Jus*_*rey 0 c c++ unix bit-manipulation
我有两个变量(实际上是两个不同矩阵的元素).例如,我想成倍增加
a[i][k]*b[k][j]
Run Code Online (Sandbox Code Playgroud)
使用位操作,我该怎么做.
我看到了对乘法常数的引用,而不是像3*2,3*4,3*8等变量.但是我如何将相同的技术应用于乘法变量呢?如果有关于此的帖子,你能指出我吗?谢谢!
给出两个积分变量
unsigned X, Y;
Run Code Online (Sandbox Code Playgroud)
鉴于Commodore 64,Apple] [或其他一些没有自己的乘法指令的架构,这将使数字倍增.
unsigned answer = 0;
while ( X )
{
answer <<= 1;
if ( X & 1 )
answer += Y;
X >>= 1;
}
Run Code Online (Sandbox Code Playgroud)