Rappresenta un numero nel punto fisso del complemento di 12 bit 2

5

La domanda originale è la seguente:

Consider a 12-bit two's complement fixed point representation, with 8 bits for the integer part and 4 bits for the fraction.
What is the binary encoding of the decimal value 45.625?

Ho trovato la rappresentazione binaria per 4510 in 8 bit per essere 001011012

Quindi divido .62510 in .510 e .12510

.510 in binario è .12

.12510 in binario è .0012

Pertanto, ho trovato la risposta finale di 00101101.10102

Tuttavia, questo è stato conteggiato in modo errato. Dove ho sbagliato?

    
posta dirk1212 14.01.2016 - 15:37
fonte

1 risposta

3

Rispondi alla tua domanda:

Se c'è un qualsiasi motivo per cui è stato conteggiato in modo errato, sarebbe nella notazione che hai usato. Non so quale sia la notazione attesa, ma i numeri binari in genere non hanno punti decimali, quindi per me la risposta corretta sarebbe semplicemente 0010 1101 1010 o 001011011010 o anche 0b001011011010 . Spero che il tuo professore / insegnante possa chiarire i requisiti di formato.

Verifica della risposta ricevuta:

La risposta che hai trovato è sicuramente corretta, ma voglio dare un approccio diverso per ottenere lo stesso risultato. Normalmente quando convertiamo da binario a decimale pensiamo a due potenze. ad esempio:

(Bit #) (Decimal value)
...       ...
4         16
3         8
2         4
1         2
0         1

Ma considera la seguente "mappatura" tra i bit e i numeri decimali:

11   128 (Actually becomes the sign bit in 2s complement)
10   64
9    32
8    16
7    8
6    4
5    2
4    1
.    (just for reference where you're putting the decimal point)
3    0.5
2    0.25
1    0.125 (provided in the example given)
0    0.0625

Nella tua affermazione sul problema dici <0,001 2 == .125 10 . Da quello, possiamo effettivamente costruire la tabella sopra. Quello che stiamo cercando di fare è trovare un fattore di scala tra le due tabelle sopra. Come lo facciamo? Guarda i bit nella stessa posizione e crea un rapporto tra i due. Nella tabella in alto, il bit 0 è uguale a 1 . Nella tabella in basso, il bit 0 è uguale a 0.0625 . Scegliamo il bit 0 perché su un lato è uguale a 1, il che semplifica i calcoli. Questi non hanno realmente unità, ma se lo facessero potrebbe essere qualcosa del tipo:

1 standard binary encoding (sbe) = 0.0625 our encoding (oe)

Usando la nostra risoluzione, possiamo essenzialmente fare analisi dimensionali sulle 'unità'. Quindi possiamo eseguire il crunch del calcolo (le unità si cancellano e ci rimane "sbe"):

45.625 oe * (1 sbe / 0.0625 oe) = 730 sbe

E se guardi il valore binario "standard" di 730, vedrai: 0010 1101 1010 o come lo hai inserito nella tua domanda: 00101101.1010 .

    
risposta data 14.01.2016 - 20:03
fonte

Leggi altre domande sui tag