[ Foro de C ]

Valor decimal de signed char

07-Jun-2020 22:41
Invitado (DiegoSD)
1 Respuestas

Hola, la mía es una pregunta muy básica, estoy aprendiendo C con el libro "aprendiendo C en 24 hs" muy bueno que no me ha dado mayores problemas hasta ahora. En el tema de modificadores de datos con signed y unsigned, el libro como ejemplo declara un signed char que inicializa con ch=0xFF. Inmediatamente en el renglón de abajo imprime:
printf("El valor decimal de signed 0xFF es %d.\n", ch);
       lo que devuleve como resultado:
              El valor decimal de signed 0xFF es -1.          

Bien, mi pregunta es ¿de dónde carajo sale el -1?!  Sé pasar un decimal negativo a binario y viceversa, pero no logro entender este resultado. Por favor, si alguien se compadece y me lo puede explicar (para que entienda un novato) se lo agradecería.


13-Jun-2020 11:03
Invitado (carlos)

hola diego, supongo que sabes que estas introduciendo un valor en exadecimal y que la F es 1111 en binario por lo que FF rellena el valor del int con unos

como el ultimo bit es el de signo y esta activado, quiere decir que es negativo

para que lo entiendas mejor si a un entero con signo (el 0) le quitas uno tendras el -1, si lo miras bit a bit el -1 es FF en exadecimal es decir todo unos






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)