Skip to main content

C++ – ¿Cómo invertir los bits de un número entero?

En el siguiente ejemplo vamos a ver cómo invertir los bits de un número entero utilizando máscaras y bits con el programa Zinjal.

CÓDIGO

#include <iostream>
using namespace std;
void invierteBits(unsigned int n);
void ingresoDatos(unsigned int &n);
int main(int argc, char *argv[]) {
 unsigned int n;
 ingresoDatos(n);
 invierteBits(n);
 return 0;
}

void ingresoDatos(unsigned int &n){
 cout<<"Ingrese número: ";
 cin>>n;  
}

void imprimeBits(unsigned int n){
 unsigned int mask= 0x80000000;
 for(int i=1;i<=32;i++){
  if((n&mask)>0){
   cout<<1 cout="" else="" mask="mask">>1;
  if(i%4==0)cout<<" ";  
 }
}

void invierteBits(unsigned int n){
 cout<<"Número expresado en bits: ";
 imprimeBits(n);
 cout<<"\nNúmero expresado en bits invertidos: ";
 unsigned int mask= 0x80000000;
 for(int i=1;i<=32;i++){
  if((n&mask)>0){
   cout<<0 cout="" else="" mask="mask">>1;
  if(i%4==0)cout<<" ";  
 }
}

Deja un comentario

A %d blogueros les gusta esto: