为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 ~1 在 Java 中返回 -2 而不是 0?

为什么 ~1 在 Java 中返回 -2 而不是 0?

MYYA 2021-11-17 17:04:08
我正在尝试否定(又名反转)给定 int 的所有位。假设给定数字的(给定数字为 5)二进制表示为 101,其否定(我的输出)应为 010。我对从最低有效位到最高有效位的每一位都使用 ~ 来否定它。public static void main (String[] args) throws java.lang.Exception    {        // your code go        int num = 5;        String givenNumInBinary = Integer.toBinaryString(num);        StringBuffer output = new StringBuffer();        for(int i = 0; i <= givenNumInBinary.length()-1;i++){            int msb = Character.getNumericValue(givenNumInBinary.charAt(i));            output.append(~msb);        }         System.out.println(output.toString());    }我的输出结果是 -2-1-2这是为什么?我究竟做错了什么?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

因为你每次反演位在


int msb = Character.getNumericValue(givenNumInBinary.charAt(i));

output.append(~msb);

而不是反转每一位。


替代解决方案是


output.append(msb == 0 ? 1 : 0);

....

System.out.println(output.toString());

输出


010


查看完整回答
反对 回复 2021-11-17
  • 1 回答
  • 0 关注
  • 215 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信