检查正或负,不使用java中的条件语句

前端之家收集整理的这篇文章主要介绍了检查正或负,不使用java中的条件语句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
上个星期遇到一个面试问题:

我需要一个函数来打印一个数字是正还是负数,而不使用条件语句,如否否则用于切换a? b:c等我怎么能这样做?

我告诉采访员说这个问题本质上是“有条件的”是不可能的.他告诉我这是可能的,但没有告诉我如何.我做了相当多的搜索,但没有很好的答案.

解决方法

一个可能的解决方案:
String[] responses = {"Positive","Negative"};
System.out.println(responses[(i >> 31) & 1]);

这也算为零为正数.

因为Java中的整数需要存储在two’s complement(或者表现得像它们一样),所以任何负数的最高位为1,而任何其他数字的最高位为0.(i> 31)复制最高位到每隔一个位(所以负数变为11111111 11111111 11111111 11111111,正/零号变为00000000 00000000 00000000 00000000). &安培; 1将除最低位之外的所有位设置为0.组合(i> 31)& 1有效地只读取i的最高位.

猜你在找的Java相关文章