我正在尝试否定(又名反转)给定 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
添加回答
举报
0/150
提交
取消