我想把一个位集分割成更多的块。分割函数依赖于位集的基数,这是设置为true的位数。例如,我有一个带有基数4的BitSet:
INPUT: 101101所需的输出如下:
OUTPUT: 100000 - 001000 - 000100 - 000001使用名为BitSet的Java库是否有一种函数或可能的方法来实现这一点?
发布于 2017-01-19 14:47:03
以下代码应用每种可能的单比特掩码,并且只保留非零的结果:
int[] split(int input) {
return IntStream.iterate(Integer.reverse(1), mask -> mask >>> 1)
.limit(Integer.SIZE)
.map(mask -> input & mask)
.filter(result -> result != 0)
.toArray();
}发布于 2017-01-19 14:20:53
是。使用基本操作和。
基本原理:
xxxxxx AND 110000 = xx0000.对所有后续的重复过程。
发布于 2017-01-19 14:24:58
这里需要一些循环:
您应该找到1的位置,然后可以创建如下循环:
如果该位置存在于列表中,则打印1其他打印0。
public static void main(String[] args) {
String Input = "101101";
//find positions
List<Integer> listPositivePosition = new ArrayList<>();
for(int i = 0; i<Input.length(); i++){
if(Input.charAt(i)=='1'){
listPositivePosition.add(i);
}
}
for(int i = 0; i<listPositivePosition.size(); i++){
for(int j = 0; j<Input.length(); j++){
//If the position exist in the List then print 1 else print 0
if(j == listPositivePosition.get(i)){
System.out.print("1");
}else{
System.out.print("0");
}
}
System.out.println();
}
}希望这能帮到你。
https://stackoverflow.com/questions/41744022
复制相似问题