[leetcode]476. Number Complement

xiaoxiao2021-02-27  122

题目链接

问题描述

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.

概要

给定一个正整数,输出它的补数,这个补数是给定的整数的二进制反码表示的值。 注意:

给定的整数在 32 位有符号整数范围内.假设整数的二进制高位没有占位的 0 .

思路

因为排除了高位的 0 ,所以不能直接通过取反运算得到结果。那我们就一位一位来进行运算。从低位开始,算出二进制值,如果为 0,就将该位的十进制值加入到结果中,因为我们要得到的是这反码的值。


代码实现

public class Solution { public int findComplement(int num) { int position = 0; int com = 0; while (num != 0) { if (num % 2 == 0) { com += Math.pow(2, position); } num >>= 1; position++; } return com; } }
转载请注明原文地址: https://www.6miu.com/read-17068.html

最新回复(0)