zoukankan      html  css  js  c++  java
  • 1012.十进制整数的补码


    自己的方法不适用性太差了 因为要另外处理0;
    所以不建议采用

    import java.util.Scanner;
    class Solution {
      	  public int bitwiseComplement(int N) {
    			String str = "";
    			int sum = 0 ;
    			if(N == 0) {
    				return 1;
    			}
    			while( N >0 ) {
    				if(N % 2 == 0) {
    					str = 1 + str;
    				}
    				else {
    					str = 0 + str ;
    				}
    				N /= 2;
    			}
    			for(int i = 0 ; i <str.length(); i++) {
    				if(str.charAt(i) == '1') 
    					sum = (sum)*2 +1;
    				else
    					sum = (sum)*2 +0;
    			}
    	        return sum;
    	    }
    }
    

    其他版本 emmmm 也是要另外处理 0 和 1 不过他方法确实挺好的 采用了位运算 get~~~~

    class Solution {
        public int bitwiseComplement(int N) {
            int i, M=N;
            for (i=1 ; i<=N ; i<<=1){
                M = M^i;
            }
            return N==0 ? 1 : M ;
        }
    }
    

    第二种位运算 很ok 基本都是这种思路

    public int bitwiseComplement(int N) {
            if (N == 0) return 1;
            int ones = 0, tmp = N;
            while (tmp != 0) {
                tmp = tmp >> 1;
                ones = ones << 1;
                ++ones;
            }
            return N ^ ones;
        }
    
  • 相关阅读:
    AWR报告生成
    ios-html-get/post差额,简而言之(MS)CheckST
    2015第33周一
    2015第32周日
    2015第32周六
    2015第32周五
    2015第32周四
    2015第32周三
    2015第32周二
    2015第32周一
  • 原文地址:https://www.cnblogs.com/cznczai/p/11150420.html
Copyright © 2011-2022 走看看