public static void main(String [] args){
int i =0xFFFFFFF1;
int j = ~i;
System.out.println(j);
}编译器结果是14  答案却是-15  我的答案又觉得是-14  ~运算符正负位到底有没有关系?? 新手 请多多指教

解决方案 »

  1.   

    答:int j = ~i;
    此时:j是:00000000 00000000 00000000 00001110
    问:一个数的补码如上,这个数是多少?当然是14了
      

  2.   

    ~按位非:对一个整型数按位进行“非”运算 
    规则:0变1  1变0
    int i =0xFFFFFFF1;
    int j = ~i;int型JAVA里是占4个字节 0x表示16进制,
    i表示为二进制数为:1111 1111 1111 1111 1111 1111 1111 0001
    按位非运算后赋给j: 0000 0000 0000 0000 0000 0000 0000 1110
    最高位为0 所以是正数j=+14
      

  3.   


    xue xie le , hehe