Manipulacion de bits
Publicado por cristofer (4 intervenciones) el 03/09/2017 06:59:48
Hola buenas a todos , estoy estudiando la carreraa de ingenierai de sistemas , y voy estudiando manipulacion de bits en c++ , hice mi codigo , compila , pero el problema es que el resultado que bota no es el correcto por ejemplo , si tengo 1001000 y quiero mover 2 bits a la derecha sería 00100100, pero en la pantalla me bota un numero pequeño digamos , no sale todo el numero , 1001, tan solo así bota el resultado , el problema me pide que ingrese un numero , que lo pase a binario , luego que este numero corra una cantidad de bits que yo ingrese , este es mi codigo , espero me puedan ayudar , esta super entendible. solo tengo ese problema .agradeceria su ayuda ,

Por si las dudas cuando coloco (contador&numero) {<<<esto refiere cuando tengamos 11001010
10100001
cout<<"1"; --------------
} 10000000
este es un ejemplo , pero para eso funciona , cada vez que contador&numero sea verdadero osea "1 " imprimira 1 , recordando que el if se lee aparte de si , si es verdad que cumple esto , entonces imprimira 1 en tal caso esto no sea verdad entonces cumplida lo otro (else).
ahora si mi codigo :
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
int a ;
int b ;
char c;
int m;
int n;
do{
cout<<"ingresar el valor que desea pasar a binario:"; cin>>a;
for(int contador=128;contador>0;contador/=2){
if(contador&a){
cout<<"1";
}
else{
cout<<"0";
}
}
cout<<endl;
cout<<"cuantos bits desea mover :"; cin>>b; cout<<endl;
cout<<"el numero binario se ha movido :"<<b<<"bits a la derecha";cout<<endl;
for(int contador=128;contador>0;contador>>=b){
if(contador&a){
cout<<"1";
}
else{
cout<<"0";
}
}
do{
cout<<endl;
cout<<"----------------------------------------------------------";cout<<endl;
cout<<"desea continuar S/N :" ;cin>>c;cout<<endl;
system("cls");
if(c=='s'||c=='n'){
m=1;
}
else{
m=0;
}
if(c=='S'||c=='N'){
n=1;
}
else{
n=0;
}
if(m+n==0){
cout<<"****************error ingrese nuevamente**************** :";cout<<endl;
cout<<"*********************ingrese solo S/N:***************";cout<<endl;
}
}while(m+n==0);
system("cls");
}while(c=='s'||c=='S');
}



Por si las dudas cuando coloco (contador&numero) {<<<esto refiere cuando tengamos 11001010
10100001
cout<<"1"; --------------
} 10000000
este es un ejemplo , pero para eso funciona , cada vez que contador&numero sea verdadero osea "1 " imprimira 1 , recordando que el if se lee aparte de si , si es verdad que cumple esto , entonces imprimira 1 en tal caso esto no sea verdad entonces cumplida lo otro (else).
ahora si mi codigo :
#include <iostream>
#include <stdlib.h>
using namespace std;
int main() {
int a ;
int b ;
char c;
int m;
int n;
do{
cout<<"ingresar el valor que desea pasar a binario:"; cin>>a;
for(int contador=128;contador>0;contador/=2){
if(contador&a){
cout<<"1";
}
else{
cout<<"0";
}
}
cout<<endl;
cout<<"cuantos bits desea mover :"; cin>>b; cout<<endl;
cout<<"el numero binario se ha movido :"<<b<<"bits a la derecha";cout<<endl;
for(int contador=128;contador>0;contador>>=b){
if(contador&a){
cout<<"1";
}
else{
cout<<"0";
}
}
do{
cout<<endl;
cout<<"----------------------------------------------------------";cout<<endl;
cout<<"desea continuar S/N :" ;cin>>c;cout<<endl;
system("cls");
if(c=='s'||c=='n'){
m=1;
}
else{
m=0;
}
if(c=='S'||c=='N'){
n=1;
}
else{
n=0;
}
if(m+n==0){
cout<<"****************error ingrese nuevamente**************** :";cout<<endl;
cout<<"*********************ingrese solo S/N:***************";cout<<endl;
}
}while(m+n==0);
system("cls");
}while(c=='s'||c=='S');
}
Valora esta pregunta


0