美文网首页
[位运算]LeetCode 476. Number Comple

[位运算]LeetCode 476. Number Comple

作者: Reflection_ | 来源:发表于2017-10-22 06:32 被阅读0次

题目:476.Number Complement

Given a positive integer, output its complement number. The complement strategy is to flip the bits of its binary representation.

Note:

The given integer is guaranteed to fit within the range of a 32-bit signed integer.

You could assume no leading zero bit in the integer’s binary representation.

Example 1:

Input:5 Output:2

Explanation:The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.

Example 2:

Input:1 Output:0

Explanation:The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.

每一位^1可得该位的反码。构造一个a= 100..., a-1=111.., 与原num抑或。


class Solution {

public int findComplement(int num) {

    int a = 1; int ori = num;

        while(num > 0){

              num = num>>1;

               a = a<<1;

          }

          return (a-1)^ori;
  
    }

}

相关文章

网友评论

      本文标题:[位运算]LeetCode 476. Number Comple

      本文链接:https://www.haomeiwen.com/subject/hlfguxtx.html