首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于位运算,该如何解决

2013-10-21 
关于位运算int t0t~t请问为什么t会是-1;Given an array of integers, every element appears three ti

关于位运算
int t=0;
t=~t;
请问为什么t会是-1;


Given an array of integers, every element appears three times except for one. Find that single one.

Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
 public int singleNumber(int[] A) {  
        int once = 0;  
        int twice = 0;  
  
  
        for (int i = 0; i < A.length; i++) {  
            twice |= once & A[i];  
            once ^= A[i];  
            int not_three = ~(once & twice);  
            once = not_three & once;  
            twice = not_three & twice;  
        }  
        return once;  
    }  
这段代码怎么理解,求指导。 位运算学的好烂。。 位运算
[解决办法]
int 0 二进制表示形式:0000 0000 0000 0000 0000 0000 0000 0000
各位全部取反:1111 1111 1111 1111 1111 1111 1111 1111

 -1 的二进制补码表示为:1111 1111 1111 1111 1111 1111 1111 1111

热点排行