从32位二进制字符串转换为int Java

时间:2015-01-01 20:19:52

标签: java bit

为什么这段代码

public static void main(String[] args){
    //                           |   |   |   |   |   |   |   |    
    int N = (int)Long.parseLong("10110011001100111111001111111100", 2);
    System.out.println(Integer.toBinaryString(N)); 
    N = Integer.parseInt       ("-0110011001100111111001111111100", 2);
    System.out.println(Integer.toBinaryString(N)); 
    N = Integer.parseInt       ("+0110011001100111111001111111100", 2); 
    System.out.println(Integer.toBinaryString(N));
}

输出:

10110011001100111111001111111100
11001100110011000000110000000100
110011001100111111001111111100

Javadocs:"' - '可以指定符号来表示负值"。为什么前两个二进制字符串不同?

1 个答案:

答案 0 :(得分:0)

这就是两人的补充方式。为了否定一个数字,它反转所有位并将1加到结果中。

实施例:          否定 11110001 ----------> 00001111