Como es que un unsigned tiene 16 bits?

Iniciado por traviatØ, 24 Octubre 2012, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

traviatØ

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
                     

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

xiruko

#2
dependera de si es un entero, un entero corto, un tipo caracter, etc.

para que veas un ejemplo:

#include <stdio.h>

int main() {

unsigned int ui;
unsigned short int usi;
unsigned char uc;

printf("unsigned int: %lu bytes\n", sizeof(ui));
printf("unsigned short int: %lu bytes\n", sizeof(usi));
printf("unsigned char: %lu byte\n", sizeof(uc));

return 0;
}


lo que dara una salida de:

unsigned int: 4 bytes
unsigned short int: 2 bytes
unsigned char: 1 byte


un saludo!