在巴西,一些公共(public)考试使用这种替代系统:
01 - Alternative bla
02 - Alternative omg
04 - Alternative god
08 - Alternative hey
TOTAL: [___]
这样,学生必须添加
他们想要标记的选项的值,并提示总数
。备选方案的值由 2^(alternative_number - 1)
定义。所以,备选方案1的值为1,备选方案2的值为2,备选方案3的值为4,等等。
那么,我怎样才能得到构建
总数的值呢?
例如,我有 23
。此数字是通过添加 16 + 04 + 02 + 01
构建的。
最佳答案
您可以将可能的备选方案解释为位掩码,并使用 &
(具有“总计”值的按位 and
运算符来测试是否选择了一个备选方案:
if ((total & 1) != 0)
System.out.println("Alternative 01 was selected");
if ((total & 2) != 0)
System.out.println("Alternative 02 was selected");
if ((total & 4) != 0)
System.out.println("Alternative 04 was selected");
if ((total & 8) != 0)
System.out.println("Alternative 08 was selected");
if ((total & 16) != 0)
System.out.println("Alternative 16 was selected");
以上代码将告诉您选择了 1
、2
、4
和 16
。为了可视化正在发生的事情,让我们将总值转换为二进制表示,因此 23
变为:
10111 // 23
让我们依次应用每个位掩码:
10111 // 23
& 00001 // 1
-------
00001 // 1 was selected
以上内容告诉我们,实际上选择了 1
选项。其他人也一样:
10111 // 23
& 00010 // 2
-------
00010 // 2 was selected
10111 // 23
& 00100 // 4
-------
00100 // 4 was selected
10111 // 23
& 01000 // 8
-------
00000 // 8 was NOT selected
10111 // 23
& 10000 // 16
-------
10000 // 16 was selected
关于java - 得到另一个结果的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986514/