tema
texto
Todo entero no negativo N tiene su representación binaria. Por ejemplo, 5 se puede representar como binario "101", 11 se puede representar como binario "1011", y así sucesivamente. Tenga en cuenta que, a excepción de N = 0, no hay ceros a la izquierda en ninguna representación binaria.
El complemento a uno binario significa que cada 1 se cambia a 0 y cada 0 se cambia a 1. Por ejemplo, el complemento binario del número binario "101" es "010".
Déle un número decimal N, devuelva el entero decimal correspondiente al complemento de su representación binaria.
Ejemplo 1:
Entrada: 5
Salida: 2
Explicación: La representación binaria de 5 es "101" y su complemento binario es "010", que es 2 en decimal.
Ejemplo 2:
Entrada: 7
Salida: 0
Explicación: La representación binaria de 7 es "111" y su complemento binario es "000", que es 0 en decimal.
Ejemplo 3:
Entrada: 10
Salida: 5
Explicación: La representación binaria de 10 es "1010" y su complemento binario es "0101", que es 5 en decimal.
inmediato:
0 <= N < 10^9
本题与 476:https://leetcode-cn.com/problems/number-complement/ 相同
Fuente: LeetCode
plantilla
int bitwiseComplement(int N){
}
Resolución de problemas
análisis
Después de comprender el problema, puede usar soluciones inteligentes
para dividir el número decimal de entrada. Es
muy sencillo saber que el número decimal devuelto por el complemento y el número decimal original son siempre iguales a 2 n -1, por lo que debemos determinar a qué intervalo pertenece el número decimal original.
while(N>pow(2,i)-1){
i++;
}
Volver a los últimos 2 n -1-N
Código fuente
int bitwiseComplement(int N){
int i=1;
while(N>pow(2,i)-1)i++;
return pow(2,i)-1-N;
}