Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 结果1';补语_Java_Ones Complement - Fatal编程技术网

Java 结果1';补语

Java 结果1';补语,java,ones-complement,Java,Ones Complement,我正试图制作一个程序,在输入二进制数后计算1的补码。 这就是我要做的: import java.util.Scanner; public class BitWiseComplement { public static void main(String[] args) { Scanner keysIn = new Scanner(System.in); System.out.println("Please enter your number: ");

我正试图制作一个程序,在输入二进制数后计算1的补码。 这就是我要做的:

import java.util.Scanner;
public class BitWiseComplement {
    public static void main(String[] args) {
        Scanner keysIn = new Scanner(System.in);
        System.out.println("Please enter your number: ");
        long originalNum = keysIn.nextLong();
        System.out.println(~originalNum);
  }
}
然而,当我输入0111011时,我得到-111012。我以为~运算符应该反转数字,以便所有0都是1,所有1都是0


有什么帮助吗?

操作符按照您的想法操作,但请记住Java中没有无符号类型,因此当您输入正数(即高位为0)时,对其应用
~
将使其为负数(通过打开高位)


如果您要以十六进制(或其他答案所建议的二进制)打印数字,您应该会看到您期望的答案。

您可能希望使用二进制,因此请尝试:

Scanner keysIn = new Scanner(System.in);
System.out.print("Please enter your number: ");

long originalNum = keysIn.nextLong(2);  // specify radix of 2
System.out.println(Long.toBinaryString(~originalNum));  // print binary string

keysIn.close();
请输入您的号码:0111011 1111111111111111111111111111111111111111111111111111111111000100
如您所见,所有位都被翻转。请记住,您输入的二进制数前面有前导0。

第一位是符号。改为使用unsigned。@ceving Java没有unsigned long类型。@Boann没有一天我没有学到Java无法学到的新东西……这就是为什么我们都认为1是正确的?因为没有显示0,但它们在那里。顺便说一下,谢谢!0110111的一个补码是1000100,但是为什么有那么多1和答案,我如何才能去掉em呢?Java int是一种恭维。例如:
System.out.println(~0)将-1打印到控制台。
Please enter your number: 0111011
1111111111111111111111111111111111111111111111111111111111000100