programa en C ++ para bits adyacentes de intercambio

El intercambio de bits adyacentes en C ++: Aquí, vamos a aprender cómo cambiar bits adyacentes de una serie ?

declaración Problema: programa en C ++ para intercambiar todos los bits impares con los bits pares (swap de bits adyacentes). Cada incluso programa positiC ++ para intercambiar todos los bits impares con los bits pares (swap de bits adyacentes). Cada bit de posición incluso se intercambia con un poco adyacente en el lado derecho y cada poco extraña posición se intercambia con adyacente en el lado izquierdo. ejemplo class, 13 (00001101) debe ser convertido a 14 bits (00001110) .En se intercambia con un bit adyacente en el lado derecho y cada bit posición impar es intercambiado con adyacente en el lado izquierdo. ejemplo For, 13 (00001101) debe ser convertido a 14 (00001110).

Formato de entrada: La primera línea de entrada contiene un número entero T denota el número de casos de prueba. Luego siguen los casos de prueba T. La primera línea de cada For prueba contiene

Formato de salida un entero sin signo de N.

: correspondiente a cada case prueba, imprimir en una nueva línea, el número convertido.

restricciones:

    1 ≤ T ≤ 100
1 ≤ N ≤ 100

Ejemplo:

    Input:
2
13
2
Output:
Original number is : 13
Converted number is : 14
Original number is : 2
Converted number is : 1

Explicación:

Si el número original es 13 (00001101), entonces los bits en la posición impar y par se intercambian en forma siguiente .

C++ program to swap adjacent bits - 4

tras la transferencia, los bits son:

C++ program to swap adjacent bits - 5

Algoritmo:

  1. Crear una máscara para obtener el 0xAAAAAAAA a los bits de extracto.
  2. Obtener los bits impares y cambiar éstos a posiciones pares.
  3. O crear mask2 (0x55555555) case incluso bits o desplazamiento a la derecha de la máscara para extraerlo. Obtener los bits pares y cambiar éstos a las posiciones impares.
  4. Combinar los valores desplazados de bits pares e impares para obtener el número convertido.

Programa:

#include <iostream>
using namespace std;
unsigned int swap_odd_even(int num){
int mask=0xAAAAAAAA;
//A in hexadecimal is equal to 10 in decimal
//and 1010 in binary
unsigned int oddbits = (num&mask);
//right shift for even bits
unsigned int evenbits = num&(mask>>1);
//can also use 0x55555555 as mask for even bits
return (oddbits>>1) | (evenbits<<1);
}
int main()
{
int T; //testcases
cout<<"Enter total number of elements (test cases): ";
cin>>T;
//variable to store the number
unsigned int N;
for(int i=0;i<T;i++)
{
cout<<"Enter number: ";
cin>>N;
cout<<"Original number is : "<<N<<endl;
cout<<"Converted number is :"<<swap_odd_even(N)<<endl;
}
return 0;
}

salida

Enter total number of elements (test cases): 2
Enter number: 13
Original number is : 13
Converted number is :14
Enter number: 2
Original number is : 2
Converted number is :1


Deja un comentario

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