Sto seguendo un corso universitario sui sistemi operativi e stiamo imparando come convertire da binario a esadecimale, decimale in esadecimale, ecc. E oggi abbiamo appena appreso come i numeri firmati / non firmati sono memorizzati nella memoria usando il complemento a due (~ numero + 1).
Abbiamo un paio di esercizi da fare su carta e vorrei essere in grado di verificare le mie risposte prima di presentare il mio lavoro all'insegnante. Ho scritto un programma C ++ per i primi esercizi ma ora sono bloccato su come ho potuto verificare la mia risposta con il seguente problema:
char a, b;
short c;
a = -58;
c = -315;
b = a >> 3;
e dobbiamo mostrare la rappresentazione binaria in memoria di a
, b
e c
.
L'ho fatto su carta e mi dà i seguenti risultati (tutte le rappresentazioni binarie in memoria dei numeri dopo il complemento a due):
a = 00111010 (è un carattere, quindi 1 byte)
b = 00001000 (è un carattere, quindi 1 byte)
c = 11111110 11000101 (è breve, quindi 2 byte)
C'è un modo per verificare la mia risposta? Esiste un modo standard in C ++ per mostrare la rappresentazione binaria in memoria di un numero, o devo codificare ogni passo da solo (calcolare il complemento a due e poi convertire in binario)? So che quest'ultimo non richiederebbe così tanto tempo, ma sono curioso di sapere se esiste un modo standard per farlo.
std::hex
manipolatore della rappresentazione esadecimale (usando il ) - Lascio che sia un esercizio per farti lavorare il resto ...