首页 > 其他 > 详细

1012.十进制整数的补码

时间:2019-07-08 13:16:49      阅读:99      评论:0      收藏:0      [点我收藏+]

技术分享图片
自己的方法不适用性太差了 因为要另外处理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;
    }

1012.十进制整数的补码

原文:https://www.cnblogs.com/cznczai/p/11150420.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!