gpt4 book ai didi

java - 有人可以向我解释这段使用移位将两个变量相乘的代码吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:49:04 24 4
gpt4 key购买 nike

<分区>

所以我有以下代码使用左右移位将两个变量 x 和 y 相乘。

class Multiply {

public static long multiply(long x,long y) {
long sum = 0;
while(x != 0) {
if((x & 1) != 0) {
sum = sum+y;
}
x >>>= 1;
y <<= 1;
}
return sum;
}

public static void main(String args[]) {
long x = 7;
long y = 5;
long z = multiply(x,y);
}
}

但是我不明白它背后的逻辑,我明白当你这样做的时候

y<<=1

你在加倍 y,但是 while 循环的迭代次数取决于 x 的位数是什么意思?

while(x != 0) 

另外,为什么我只在 x 的最右边位是 1 时才求和?

   if((x & 1) != 0) {
sum = sum+y;
}

我真的很努力去理解代码,但我一直没能理解算法。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com