Programa en C para establecer el K-ésimo bit de un número N

Dado un número N y un entero K , la tarea es establecer el K-ésimo bit del número N , es decir, si el K-ésimo bit es 0, luego configúrelo en 1 y si es 1, déjelo sin cambios.

Ejemplos: 

Entrada: N = 5, K = 2
Salida: 7
Explicación: 
5 se representa como 101 en binario y tiene su segundo bit 0, por lo que configurarlo dará como resultado 111, es decir, 7.

Entrada: N = 5, K = 1
Salida: 5
Explicación: 
5 se representa como 101 en binario y su primer bit ya es 1, por lo que configurarlo dará como resultado 101, es decir, 5.

Enfoque ingenuo: un enfoque simple sería agregar el poder de los 2 si ese bit no está configurado en número. Los siguientes son los pasos para nuestra idea. 

  • Compruebe si el bit está establecido o no.

norte = 4, k = 1

5 -> 100

entonces, si toma el bit a bit y de N y   2 K-1   si ese bit está configurado, el resultado es 1; de lo contrario, el resultado es 0. 

ya que 1 & 0 = 0 y 0 & 1 = 0 

1 y 1 = 1 y 0 y 0 = 1

K = 1 -> 2 1-1 = 2 0 = 1 -> 001

N & 2 k-1 = 100 & 001 = 000, por lo que el bit no está establecido.

  • Si el bit no está configurado, configure el bit agregando 2 K-1 al número.

N = 4 -> 100 , K = 2 0 = 1

norte + k = 4 +1 = 5

Entonces configuramos el bit 1 y el resultado es 5 -> 101  

  • Si el bit está establecido, no agregue el número. 

A continuación se muestra el programa para implementar la idea anterior.

C

// Online C compiler to run C program online
#include <stdio.h>
#include<math.h>
 
// Function to set Kth bit
int number( int n, int k){
     
    int x = (int)pow(2,k-1);
    // Checking the Kth bit is set or not
    if(n & x) return n;
    else{
        return n + x;
    }
}
// Driver code
int main() {
     
    int result = number(5, 2);
    printf("%d",result);
     
    return 0;
}
Producción

7

Enfoque efectivo: el enfoque para resolver este problema se basa en la técnica de enmascaramiento de bits con la ayuda del operador OR bit a bit.

  • Dado que el OR bit a bit de cualquier bit con un bit establecido da como resultado un bit establecido, es decir

Cualquier bit <O bit a bit> Establecer bit = Establecer bit

lo que significa,

0 | 1 = 1

1 | 1 = 1

  • Entonces, para establecer un bit, la mejor idea es realizar un OR bit a bit del número con un bit establecido.

norte = norte | 1 << K

O

n |= 1 << K

donde K es el bit que se va a establecer

A continuación se muestra el programa C++ para implementar el enfoque anterior:

C++

// C++ program to implement the above approach
#include <stdio.h>
 
// Function to set the
// kth bit of n
int setBit(int N, int K)
{
    return (N | (1 << (K - 1)));
}
 
// Driver code
int main()
{
    int N = 5, K = 2;
    printf("%d\n", setBit(N, K));
    return 0;
}
Producción

7

Publicación traducida automáticamente

Artículo escrito por Code_r y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *