[Lenguaje C] [leetcode] conversión de enteros

Directorio de artículos


1. Tema

Conversión de enteros. Escriba una función que determine cuántos bits deben cambiarse para convertir el entero A en el entero B.

Ejemplo 1:
Entrada : A = 29 (o 0b11101), B = 15 (o 0b01111)
Salida : 2
Ejemplo 2:
Entrada : A = 1, B = 2
Salida : 2

Dos, el código

整体思路非常简单就是 按位异或,然后求1的个数

int convertInteger(int A, int B){
    
    
    int count=0;
    //这里是唯一需要注意的地方
    //加入异或完结果是32个1,这个时候是负数的最小值,int能接收
    //但是消除低位1的时候需要-1,这时候就会导致溢出
    //所以需要用无符号整型来接收,当正数来处理
    //就不会影响结果了
    unsigned int ret=A^B; 
    while(ret)
    {
    
    
        ret=ret&(ret-1);
        count++;
    }
    return count;
}

3. Enlaces

Pregunta de entrevista 05.06 Conversión de enteros

Supongo que te gusta

Origin blog.csdn.net/lyq2632750277/article/details/126387758
Recomendado
Clasificación