1. 程式人生 > 其它 >476. 數字的補數

476. 數字的補數

對整數的二進位制表示取反(0 變 1 ,1 變 0)後,再轉換為十進位制表示,可以得到這個整數的補數。

例如,整數 5 的二進位制表示是 "101" ,取反後得到 "010" ,再轉回十進位制表示得到補數 2 。
給你一個整數 num ,輸出它的補數。

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/number-complement
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

import java.util.Scanner;

class Solution {

    public int findComplement(int num) {
        int left = 0;
        int ret = 0;
        while (num != 0) {
            ret |= (1 ^ (num & 1)) << left;
            left++;
            num >>= 1;
        }
        return ret;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            System.out.println(new Solution().findComplement(in.nextInt()));
        }
    }
}
心之所向,素履以往 生如逆旅,一葦以航