【问题标题】:Java - Convert boolean[] to decimalJava - 将布尔 [] 转换为十进制
【发布时间】:2010-08-16 17:35:42
【问题描述】:

一个布尔数组可以被认为是一个二进制数,例如

boolean[] four = {true, false, false}; //100

我想将这样的数组转换为其十进制等价物,例如

int decimal = convertBooleanArrayToDecimal(four);
//decimal == 4

我该怎么做?

干杯,

皮特

【问题讨论】:

    标签: java boolean decimal


    【解决方案1】:

    试试这样的。

    long result = 0;
    for (boolean bit : four) {
        result = result * 2 + (bit ? 1 : 0);
    }
    

    【讨论】:

    • 请查看该表达式!我相信你是乘以 (2 + bit) 而不是添加位并乘以 2。
    • @Carl:我很确定乘法优先。但是一对括号来澄清/确保它不会受到伤害。
    • @BlairHippo 最初有一个错误,但我在几秒钟内纠正了它。
    【解决方案2】:

    另一种解决方案:

    long result = 0;
    for (boolean bit: boolArray)
    {
        result <<= 1;
        if (bit) result += 1;
    }
    

    这在数学上等同于 Nikita 的解决方案,但我发现位移版本更清晰。

    【讨论】:

      猜你喜欢
      • 2011-07-28
      • 2017-10-06
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 2020-04-03
      • 1970-01-01
      相关资源
      最近更新 更多