Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: traviatØ en 24 Octubre 2012, 02:35 am



Título: Como es que un unsigned tiene 16 bits?
Publicado por: traviatØ en 24 Octubre 2012, 02:35 am
Hola, sucede que estaba probando los operadores a nivel de bits de C,  he visto en varios lugares que utilizan variables unsigned para hacer operaciones a nivel de bits con C, ahora mi pregunta es, como es que los unsigned tienen 16 bits, si con el operador sizeof se muestra que un unsigned tiene 4 bytes que serian 4x8=32 bits? Saludos


Título: Re: Como es que un unsigned tiene 16 bits?
Publicado por: rir3760 en 24 Octubre 2012, 02:47 am
Ese es el numero mínimo de bits pero nada impide (como es tu caso) que su numero sea mayor. Caso similar es el numero de bits por carácter, su mínimo es ocho pero es posible que sean mas, en caso de duda se puede utilizar la macro CHAR_BIT (su definición se encuentra en <limits.h>).

Un saludo


Título: Re: Como es que un unsigned tiene 16 bits?
Publicado por: xiruko en 24 Octubre 2012, 12:58 pm
dependera de si es un entero, un entero corto, un tipo caracter, etc.

para que veas un ejemplo:

Código
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.  
  5. unsigned int ui;
  6. unsigned short int usi;
  7. unsigned char uc;
  8.  
  9. printf("unsigned int: %lu bytes\n", sizeof(ui));
  10. printf("unsigned short int: %lu bytes\n", sizeof(usi));
  11. printf("unsigned char: %lu byte\n", sizeof(uc));
  12.  
  13. return 0;
  14. }

lo que dara una salida de:

Código:
unsigned int: 4 bytes
unsigned short int: 2 bytes
unsigned char: 1 byte

un saludo!