在巴西,一些公开考试使用这种替代系统:
01 - Alternative bla
02 - Alternative omg
04 - Alternative god
08 - Alternative hey
TOTAL: [___]
这样,学生必须add
来自他们想要标记的替代值的值,并在total number
中提示。备选方案的值由2^(alternative_number - 1)
定义。因此,备选方案1的值为1,备选方案2的值为2,备选方案3的值为4,等等。
那么,我怎样才能得到builded
总数的值?
例如,我有23
。这个数字是通过添加16 + 04 + 02 + 01
来构建的。
答案 0 :(得分:3)
您可以将可能的替代方法解释为位掩码,并使用&
,逐位and
运算符,使用" total"测试是否选择了一个替代方案的价值:
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