![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Pasar varible de 16 bits a dos de 8 bits
Hola compañeros
La cabeza, a ciertas edades, sirve para llevar sombrero. El problema es que no recuerdo como se hace para cargar en dos varibles de 8 bits una de 16. Ya se que es lo más sencillo que hay pero no lo recuerdo y cuanto más busco peor. Por eso he tirado de vosotros. Gracias Pd he tirado del buscador pero no he tenido suerte |
#2
|
||||
|
||||
Hola, ¿a qué te refieres exactamente con variables de 8 y 16 bits?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Y que contienen esas variables?
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#4
|
|||
|
|||
Lo dicho del sombrero..jeje si no fuese por las orejas se me caeria.
Tengo una variable int y quiero pasarla a dos unsigne char. Es decir poder manipular de 8 en 8 bits la variable int int contador= 2000; unsigne char menos_peso = 8bits de menos peso de contador unsigne char medio_peso = 8 bits de mas peso de contador En CCs, compilador de pic, lo hago: menos_peso = make8(converter,0) ; medio_peso = make8(converter,1); Recuerdo que se puede hacer tambien con el c++ de builder pero no recuerdo como. Gracias por vuestras prontas respuestas. PD Tambien me he dado cuenta que ha ido a parar a microcontroladores y queria ponerlo en builder. no pasa na ahi se queda como hacerlo con los micros. Resaludos Última edición por bactering fecha: 02-10-2010 a las 00:02:00. |
#5
|
||||
|
||||
Hola.
En delphi existen 2 funciones para ello: SYSTEM.HI y SYSTEM.LO Supongo que en C++ también están. Extracto de la ayuda integrada: function Hi(X: Integer): Byte; Returns the high-order byte of X as an unsigned value. In Delphi code, use Hi to obtain the high-order byte of an expression of type Word or Integer. Note: Hi treats Integer as a 16-bit value, even if it is 32-bit.
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#6
|
||||
|
||||
En primer lugar se debe aclarar que un int en un entorno de procesador de 32 bits, ocupa 32 bits y no 16. Quizás lo adecuado sea hablar de un WORD o un short int que si son de 16 bits.
Un int podríamos usarlo si su valor no supera 65535 ó 0xFFFF. Entonces la solución pasa por la aritmética binaria y desplazamientos. Código:
WORD W = 1234; // un valor... BYTE BH = W>>8; // Desplazo a la derecha 8 bits BYTE HL = W & 0x00FF; //Elimino la parte alta con un and binario |
#7
|
||||
|
||||
Otra forma de conseguirlo es usando uniones:
Código:
typedef union{ struct{ BYTE L; BYTE H; }B; WORD HL; } WData; WData HL; HL.HL= 0xAABB; // HL.B.H Contiene la parte alta // HL.B.L Contiene la parte baja Saludos. |
#8
|
|||
|
|||
Gracias. Las soluciones me han resuelto el problema.
Saludos |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como ejecutar aplicativos dbExpress de 32 bits en 64 bits | rolandoj | Conexión con bases de datos | 0 | 30-07-2010 19:39:07 |
BDE Win x64 bits | Cristalero | Conexión con bases de datos | 1 | 16-11-2009 14:12:05 |
Aplicaciones de 32 bits en Windows de 64 bits | Gabo | Debates | 9 | 25-09-2008 20:49:32 |
operaciones con bits | pulpin | C++ Builder | 2 | 25-04-2008 21:14:57 |
Convertir un BMP de 24 Bits a 8 Bits | TEO127 | Gráficos | 3 | 18-06-2007 17:58:19 |
![]() |
|