Hola. Estoy estudiando una asignatura y me ha surgido la siguiente duda: ¿Que diferencia hay entre declarar un carácter con signo y un carácter sin signo?
Para el siguiente carácter:
X7 X6 X5 X4 X3 X2 X1 X0
se supone que cuando el caracter tiene signo, está declarado por ejemplo:
char var1;
el bit mas significativo (X7) nos indica si este número es positivo o negativo. Si este bit es 0 el número es tal cual, si el bit es 1 el número es negativo y está expresado en Ca2.
Hasta aquí correcto. El problema viene cuando declaro el carácter sin signo, por ejemplo:
usigned char var2;
ahora se supone que el número no puede ser negativo (porque no tiene signo ¿no?) pues sí que lo puede ser, puedes asignarle -16 y lo reconoce sin problemas.
Además, contando con que el bit (X7) no va a indicar signo (porque para eso es sin signo, ¿no?) digo yo que el número mas grande para este tipo sería:
1111 1111
es decir, el +255. Pues no, lo reconoce como el -1. Es decir, ve que el bit (X7) es 1, le hace el Ca2 y se queda con que es el -1.
¿Porque? ¿Acaso mi compilador (Visual C++ 2005) implementa igual los tipos de datos con signo o sin signo?