gpt4 book ai didi

Java:如何进行按位乘法?

转载 作者:行者123 更新时间:2023-12-01 17:05:50 32 4
gpt4 key购买 nike

我正在学习生成集合的所有子集,并尝试转换以下 C 程序

#include <stdio.h>
#include <math.h>

void printPowerSet(char *set, int set_size)
{
/*set_size of power set of a set with set_size
n is (2**n -1)*/
unsigned int pow_set_size = pow(2, set_size);
int counter, j;

/*Run from counter 000..0 to 111..1*/
for(counter = 0; counter < pow_set_size; counter++)
{
for(j = 0; j < set_size; j++)
{
/* Check if jth bit in the counter is set
If set then pront jth element from set */
if(counter & (1<<j))
printf("%c", set[j]);
}
printf("\n");
}
}

/*Driver program to test printPowerSet*/
int main()
{
char set[] = {'a','b','c'};
printPowerSet(set, 3);

getchar();
return 0;
}

引用:http://www.geeksforgeeks.org/power-set/

我的代码看起来像

private static void printAllSubsets(final Set<Integer> set) {
final int subsetSize = (int) Math.pow(2, set.size());
for (int counter = 0; counter< subsetSize; counter++) {
for (int i = 0; i<set.size(); i++) {
if(counter & (1 << i)) {

}
}
}
}

但是我在

上遇到编译错误
if(counter & (1 << i)) 

as 找到所需的 boolean 值 int

如何才能达到与 C 代码相同的结果?我不明白这里是如何进行按位运算的

谢谢

最佳答案

你可以使用

if ((counter & (1 << i)) != 0)

Java 需要在 if 条件中使用显式 boolean 表达式。在 C 中,!= 0 是隐式的。

顺便说一句,请注意您可以使用

final int subsetSize = (1 << set.size());

而不是使用 Math.pow 和转换。

关于Java:如何进行按位乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25650708/

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