加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 05:34:37 所属栏目:Java 来源:网络整理
导读:上个星期遇到一个面试问题: 我需要一个函数来打印一个数字是正还是负数,而不使用条件语句,如否否则用于切换a? b:c等我怎么能这样做? 我告诉采访员说这个问题本质上是“有条件的”是不可能的.他告诉我这是可能的,但没有告诉我如何.我做了相当多的搜索,但
上个星期遇到一个面试问题:

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

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

解决方法

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

这也算为零为正数.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读