Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/04/2013, 21:43
TrucosJuan
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 6
Bytes ocupados por caracter

Tengo entendido que el espacio ocupado por una variable de tipo char (o cualquier otro tipo) no es una cantidad fija de bytes, que el estándar establece un mínimo y un máximo para cada tipo y que la cantidad de espacio asignada a cada tipo varía de una computadora a otra, y también entre compiladores. Esto es lo que indica el libro "Thinking in Cpp".

Pero hace poco me preguntaron si un caracter (así, a secas) ocupa siempre un byte.
Y la verdad es que no estoy seguro

Según los comentarios de la siguiente página, eso es correcto:
http://usando.info/blog/2007/06/bits...-entender.html

Pero en la wikipedia, en este enlace:
http://es.wikipedia.org/wiki/UTF-8
Indica que UTF-8 es un formato de codificación de caracteres... y en sus características indica lo siguiente:
Cita:
El número de bytes depende exclusivamente del código de carácter asignado por Unicode y del número de bytes necesario para representarlo.
Y luego indica que esa cantidad varía entre 1 y 4 bytes.

Luego recordé los operadores a nivel de bit en C++ e hice el siguiente programa (con ayuda de un libro) que convierte cualquier caracter a binario:
Código:
#include <iostream>
using namespace std;

int main()
{
    char c;
    cout<<"Ingrese un caracter: ";
    cin>>c;
    cout<<"\'"<<c<<"\' en binario: ";
    for(short i=7; i>=0; --i)
        if( c & (1<<i) )
            cout<<1;
        else cout<<0;
    return 0;
}
Sin embargo, esto no tiene nada que ver con el espacio de almacenamiento que ocupa un caracter (o eso creo)
Es que el programa toma el caracter y al mostrarlo en binario, muestra convertido a binario su código correspondiente en ASCII.
Por ejemplo, si ingreso el caracter 1, va a mostrar 49 en binario (y eso no tiene nada que ver me parece).

Gracias de antemano.