Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:将bool数组转换为单个int_Java_Integer_Boolean_Bit Manipulation - Fatal编程技术网

Java:将bool数组转换为单个int

Java:将bool数组转换为单个int,java,integer,boolean,bit-manipulation,Java,Integer,Boolean,Bit Manipulation,我有一个布尔数组(长度=2),我希望将其合并并转换为整数,以便整数中的各个位表示布尔数组中的值: [false, false] = 0 [false, true] = 1 [true, false] = 2 [true, true] = 3 长度的一般解!=2: public static void main(String[] args) { boolean[] array = {true, true, false}; int number = 0; int j = a

我有一个布尔数组(长度=2),我希望将其合并并转换为整数,以便整数中的各个位表示布尔数组中的值:

[false, false] = 0
[false, true] = 1
[true, false] = 2
[true, true] = 3
长度的一般解!=2:

public static void main(String[] args) {
    boolean[] array = {true, true, false};
    int number = 0;
    int j = array.length - 1;
    for (int i = 0; i < array.length; i++) {
        if (array[i])
            number += 1 << j--;
    }
}
publicstaticvoidmain(字符串[]args){
布尔[]数组={true,true,false};
整数=0;
int j=数组长度-1;
for(int i=0;i
int n = (a[0] ? 2 : 0) + (a[1] ? 1 : 0);
如果您想要更通用的解决方案:

int n = 0, l = a.length;
for (int i = 0; i < l; ++i) {
    n = (n << 1) + (a[i] ? 1 : 0);
}
int n=0,l=a.length;
对于(int i=0;in=(n任意长度数组的通用方式(尽管只有最后32个元素会产生差异,因为int是32位):

int booleansToInt(boolean[]arr){
int n=0;
for(布尔b:arr)

n=(你的问题是什么?你试过什么?哈哈-你的更优雅。+1你知道
Math.pow(2,n)==2这是真的,也是一个很好的观点。为了谷歌观众的缘故,我想我还是把这个留着吧。它对初学者来说更具可读性。以后,他们可以继续进行位转换来加快速度。整洁-我总是忘记了
的版本
int n = 0, l = a.length;
for (int i = 0; i < l; ++i) {
    n = (n << 1) + (a[i] ? 1 : 0);
}
int number = 0;
for(int i = array.length - 1; i >= 0; i--)
{
  if(array[i])
  {  
    int exponent = (array.length - 1 - i)
    number += Math.pow( 2, exponent );
  }
}
int booleansToInt(boolean[] arr){
    int n = 0;
    for (boolean b : arr)
        n = (n << 1) | (b ? 1 : 0);
    return n;
}