Autor
|
Tema: Convertir de Long a Binario (Leído 6,886 veces)
|
BlaineMonkey
Desconectado
Mensajes: 72
|
Tengo una variable long y quiero convertir el número a binario, pero no sé cómo hacerlo. Pongo un ejemplo de qué es lo que quiero, para ver si se os ocurre como podría hacerlo. Ejemplo: long valor = 5 int binData[8]={0,0,0,0,0,0,0,0};
Quiero guardar el 5 en binario en un array de 8 enteros el valor.
Ejemplo: binData contendría el array siguiente: {0,0,0,0,0,1,0,1};
¿Cómo puedo hacerlo?
|
|
|
En línea
|
|
|
|
Ca0s
|
Haz la conversión a binario tal cual la harías con boli y papel... Te pongo la conversión (la imprime al revés): #include <stdio.h> int main() { long num=5; long res=0; long coc=0; while(num>=2) { coc=num/2; res=num%2; printf("%i", res); num=coc; } printf("%i\n", num); return 0; }
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Asi tambien se puede: <Aqui esta el codigo Corriendo en CodePad> #include <stdio.h> #include <string.h> #include <stdlib.h> struct _byte_bits { unsigned bit0:1; unsigned bit1:1; unsigned bit2:1; unsigned bit3:1; unsigned bit4:1; unsigned bit5:1; unsigned bit6:1; unsigned bit7:1; }; int main() { long _long = 78; int _i = 0; _byte_bits _binary[sizeof(long)]; memset( &_binary , 0 , sizeof(_byte_bits )*sizeof(long) ); memcpy( &_binary , &_long , sizeof(_byte_bits )*sizeof(long) ); for ( _i=(sizeof(_byte_bits)-1) ; _i>=0 ; --_i ) { fprintf( stdout , "%d" , _binary [_i ]. bit7 ); fprintf( stdout , "%d" , _binary [_i ]. bit6 ); fprintf( stdout , "%d" , _binary [_i ]. bit5 ); fprintf( stdout , "%d" , _binary [_i ]. bit4 ); fprintf( stdout , "%d" , _binary [_i ]. bit3 ); fprintf( stdout , "%d" , _binary [_i ]. bit2 ); fprintf( stdout , "%d" , _binary [_i ]. bit1 ); fprintf( stdout , "%d" , _binary [_i ]. bit0 ); } return 0; }
Dulces Lunas!¡.
|
|
« Última modificación: 21 Junio 2011, 21:25 pm por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Los números long son de 4 bytes por lo tanto tienen 32 bits. Yo lo hice con un número de 8 bits, o sea, de tipo unsigned char. #include <iostream> int main(int argc, char * argv[]) { unsigned char numBin[8], numero = 5; unsigned char aux = 0; for (int i = 0; i < 8; i++) { aux = numero >> (7 - i); aux = aux << 7; if (aux == 128) numBin[i] = 0x31; //Un 1 else numBin[i] = 0x30; //Un 0 std::cout << numBin[i]; } std::cin.get(); return 0; }
Son puras matemáticas, se van desplazando los bits de derecha a izquierda para conseguir que quede 128, si es así significa que el bit actual es 1. Saludos.
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Con mascaras y con el dezplazamiento de bits ( los dos metodos mas rapidos ) puedes obtener el numero binario. Aqui te dejo el codigo corriendo http://codepad.org/jfxvOYW5 #include <stdio.h> int main() { unsigned char byte = 205; fprintf( stdout , "%d" , (byte & 0x80)>>7 ); fprintf( stdout , "%d" , (byte & 0x40)>>6 ); fprintf( stdout , "%d" , (byte & 0x20)>>5 ); fprintf( stdout , "%d" , (byte & 0x10)>>4 ); fprintf( stdout , "%d" , (byte & 0x8)>>3 ); fprintf( stdout , "%d" , (byte & 0x4)>>2 ); fprintf( stdout , "%d" , (byte & 0x2)>>1 ); fprintf( stdout , "%d" , (byte & 0x1) ); return 0; }
P.D.: Los numeros Long dependen su longitud de bytes segun la arquitectura del PC es decir en una architectura x32 = 4 bytes y en una de x64 son 8 bytes... segun se la que le seguira en un futuro la de x128 sera de 16 bytes... Dulces Lunas!¡.
|
|
« Última modificación: 21 Junio 2011, 23:23 pm por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
BlackZeroX no se de donde sacaste eso de los números long, pero yo tengo Win7 SP1 64 bits y haciendo un sizeof al tipo long me dice que son 4 bytes. Todo esto usando el Visual C++ 2010.
Saludos.
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
Akai
Desconectado
Mensajes: 823
|
Khronos14 y Queta: http://en.wikipedia.org/wiki/Long_integerFijaos en la diferencia según el sistema o el estándar que se use. Por ejemplo, Linux kernel 2.6.39 x64 usando gcc 4.6: #include <stdio.h> int main(){ printf("%d %d %d\n",sizeof(int),sizeof(long),sizeof(long int)); return 0; }
resultado: 4 8 8
|
|
|
En línea
|
|
|
|
Queta
Desconectado
Mensajes: 267
|
Obviamente, ya es lo que dije: * The values of the columns Size and Range depend on the system the program is compiled for. The values shown above are those found on most 32-bit systems. But for other systems, the general specification is that int has the natural size suggested by the system architecture (one "word") and the four integer types char, short, int and long must each one be at least as large as the one preceding it, with char being always one byte in size. The same applies to the floating point types float, double and long double, where each one must provide at least as much precision as the preceding one. http://www.cplusplus.com/doc/tutorial/variables/
|
|
|
En línea
|
"Intenta no volverte un hombre de éxito, sino volverte un hombre de valor." Albert Einstein.
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Vale hombre, no hagamos un flame de esto xD Tan sólo me pareció raro, porque siempre pensé que el tipo long en Windows era de 4 bytes. En mi Debian, con gcc version 4.4.5 (Debian 4.4.5-8) y Linux 2.6.32-5-686: #include <stdio.h> int main(){ printf("%d %d %d\n",sizeof(int),sizeof(long),sizeof(long int)); return 0; }
Me da esto: 4 4 4 Saludos.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
convertir long a rgb
Programación Visual Basic
|
<[(x)]>
|
3
|
5,893
|
5 Marzo 2009, 07:56 am
por hechelion
|
|
|
Problema al convertir de binario a hexadecimal (MAC)
Java
|
xopito
|
2
|
5,189
|
26 Marzo 2011, 11:43 am
por xopito
|
|
|
Arrays de chars to long long
Programación C/C++
|
Xedrox
|
0
|
1,575
|
24 Diciembre 2012, 01:03 am
por Xedrox
|
|
|
Long long to char
Programación C/C++
|
Xedrox
|
3
|
2,798
|
5 Agosto 2013, 10:15 am
por amchacon
|
|
|
problemas con long long int
Programación C/C++
|
m@o_614
|
7
|
3,935
|
13 Marzo 2014, 17:59 pm
por Yoel Alejandro
|
|