Friday 22 September 2017

Binarie Opzioni Normalizzato Mantissa


Come rappresentare 0,148 2 in normalizzata aritmetica in virgola mobile con il formato (0,148) (,00100101111.) 2 Abbiamo spostarlo 3 bit verso sinistra per rendere più normalizzato (1,00,101111 millions) 2 2. Esponente 1164 (75) (1.001.011) e 2 Mantissa (01.001.111) 2. Così la rappresentazione in virgola mobile è (0100101100101111) 2 (4B2F) Rappresentazione Un Ma se memorizziamo il denormalizzato mantissa in 8 registro bit, quindi non ci vorrà hanno conservato gli ultimi tre 1s e quindi mantissa sarebbe normalizzato da (,00,100101 millions) 2 (1,00,101 milioni ) 2 con l'inserimento di 3 0s invece di 1s. La rappresentazione sarebbe stata (0.100.101,100101 miliardi) 2 (4B28) Rappresentazione B Così, mentre la normalizzazione, fa il processore prende in considerazione i bit denormalizzati mantissa oltre 8 bit troppo O arrotonda fuori Qual è corretta solo: A o B Vuol memorizzare la mantissa nella rappresentazione punto fisso come fa tutto workIm un po 'confuso su come normalizzare i numeri in C. so che se avete qualcosa di simile alla virgola mobile valore binario 1.101,101, è normalizzato come 1,101,101 mila x 23 spostando il punto decimale 3 posizioni a sinistra. Tuttavia, non sono sicuro come fare questo nel codice. Quindi, se ho 10.010.000 exp 0 e voglio ottenere 01.001.000 exp 1, il campo frazione è 001 e il risultato finale è 010001. Se ho un numero di 8 bit e le principali 2 bit sono 00, voglio spostarlo fino a quando ho trovare un 1, o se ho un po 'leader di 01 allora è già normalizzata. Analogamente per un leader 2 bit di 11 lo sposto a quello di sinistra. Quindi, se il mio numero era 32 bit, 1 per il segno, 8 per l'esponente, 23 per la mantissa, dovrei fare qualcosa di simile: E poi molti di più se le dichiarazioni per gli altri 2 numeri importanti bit (00, 10) io non sono sicuro se il mio Logiccode è giusto. Come dici tu, è necessario estrarre il segno, mantissa ed esponente. Il diagramma sopra tratto da Wikipedia mostra come si è presentato per la precisione formato più comune singola virgola mobile, IEEE 754. Per estrarre ogni parte abbiamo bisogno di fare questo in tre fasi descritte di seguito. Non ho il codice C, ma vi mostrerò i passaggi che è necessario prendere. Dopo aver estratto i 3 parti semplicemente metterli nelle posizioni di bit mostrati nel diagramma sopra. Se la sua un numero senza segno questo è sempre 0. Se la sua firmato il suo MSB. 2. Esponente Se il numero è firmato e negativo sarà necessario capovolgere tutti i bit e aggiungere 1 per girarlo positivo. Se non è possibile lasciare così com'è. Per estrarre l'esponente dobbiamo sapere dove il punto binario è destinata ad essere. Let la posizione del punto binaria essere B (Nel tuo esempio suo 3). Lasciate che il primo bit da MSB che è di 1 BE p (Nel tuo esempio la sua 6). Lasciando l'esponente essere posta. 3. Mantissa Questo sarà uguale ai bit dalla posizione p-1 fino al bit 0.Im cercare di convertire un int in un float personalizzato, in cui l'utente specifica la quantità di bit riservati per l'exp e mantissa, ma io non capire come funziona la conversione. La mia funzione prende in un valore int e ed int exp per rappresentare il numero (valore 2EXP) i. e valore 12, exp 4, restituisce 192. ma io non capire il processo che devo fare per cambiare questi. Ive stato a guardare questo per giorni e giocare con le applicazioni del convertitore web IEEE ma io non capisco quello che il processo di normalizzazione è. Come ho vedere che la sua mossa il punto binario e regolare l'esponente, ma non ho idea di che cosa questo significa, qualcuno mi può dare un esempio di andare fuori di Anche io non capisco quello che il bias esponente è. L'unica informazione che ho è che è sufficiente aggiungere un numero per il tuo esponente, ma io non capisco perché. Ive stato alla ricerca di Google per un esempio che posso capire, ma questo solo isnt fare alcun senso per me chiesto 1 marzo 15 a 23:31 U2EF1 così come faccio a sapere quante volte ha bisogno di essere spostato nel corso simile, se le specifices utente 4 bit per la mantissa, e il valore è 3, come faccio a sapere di spostare 0011 oltre a 1000 Potrei così qualcosa come ottenere pow maxval (2, Mant ltspecified. bitsgt) -1 poi passare valore (0011) a destra fino a quando il valore gt maxval, e avere un contatore tenere traccia di quante volte faccio questo ndash Tommy K 1 marzo 15 a 23:51 un numero a virgola mobile è normalizzata quando si forza la parte intera della sua mantissa di essere esattamente 1 e consentire la sua parte frazionaria di essere qualsiasi cosa piace. Ad esempio, se dovessimo prendere il numero 13.25. che è 1101,01 in binario, 1101 sarebbe la parte intera e 01 sarebbe la parte frazionaria. Potrei rappresentare 13.25 come 1101,01 (20). ma questo non è normalizzato in quanto la parte intera non è 1. Tuttavia. ci è permesso di spostare la mantissa a destra di una cifra se si aumenta l'esponente da 1: Questa rappresentazione 1,10,101 mila (23) è la forma normalizzata di 13.25. Detto questo, sappiamo che i numeri in virgola mobile normalizzati saranno sempre venire in forma 1.fffffff (2EXP) Per l'amor efficiencys, noi non preoccuparsi di conservare la parte 1 intero nella rappresentazione binaria in sé, fingiamo che è là. Quindi, se dovessimo dare il vostro tipo float su misura 5 bit per la mantissa, sapremmo i bit di 10100 sarebbe in realtà stare per 1,10,1 mila. Ecco un esempio con lo standard 23-bit mantissa: Per quanto riguarda il pregiudizio esponente, consente di dare uno sguardo al formato float a 32 bit standard, che è suddiviso in 3 parti: 1 bit di segno, 8 bit esponente e 23 bit mantissa : Gli esponenti 00000000 e 11111111 hanno scopi speciali (come rappresentante Inf e NaN), quindi con 8 bit esponente, potremmo rappresentare 254 diversi esponenti, dicono da 21 a 2254. per esempio. Ma cosa succede se vogliamo rappresentare 2-3. Come facciamo a esponenti negativi Le correzioni formato questo problema sottraendo automaticamente 127 dalla esponente. Quindi: 0000 0001 sarebbe 1 -127 -126 0010 1101 sarebbero 45 -127 -82 0111 1111 sarebbero 127-127 0 1001 0010 sarebbero 136-127 9 Questo cambia la gamma esponente da 21. 2254 a 2-126. 2127 in modo che possiamo rappresentare esponenti negativi. processo di normalizzazione converte gli ingressi in una gamma selezionata. binary32 si aspetta che il significante (non mantissa) per essere nel range 1.0 lt s lt 2.0 a meno che il numero ha un esponente di minimo. Esempio: valore 12, exp 4 è lo stesso valore di 12 (222), exp 4 3 valore 1.5, exp 7 Poiché il significante ha sempre una cifra iniziale di 1 (a meno che il numero ha un esponente di minimo), non vi è alcuna necessità di conservarlo. E invece di memorizzare l'esponente come 7. si aggiunge una polarizzazione di 127 ad esso. valore decimale 1.5 - 1.1000. 000 binario - 0.1000. 000 memorizzati binari (23 bit in tutto) Esp 7 - bias di exp 7 127-134 decimale - 10.000.110 binario Il modello binario memorizzato è la concatenazione del segno, significando con un primario 1 bit implicito e di un esponente di polarizzazione Quando il parziale esponente 0 - il valore minimo, il bit implicito è 0 e così piccoli numeri come 0.0 possono essere memorizzati. Quando l'esponente di parte è 255 - il valore massimo, i dati memorizzati non rappresentano numeri finiti, ma l'infinito e non-a-numeri. Controllare il link di riferimento per maggiori dettagli. Tommy - chux e eigenchris, insieme agli altri hanno fornito ottime risposte, ma se guardo i tuoi commenti correttamente, ti sembra ancora di essere alle prese con i dadi e bulloni di come vorrei prendere queste informazioni e quindi utilizzare questo nella creazione di una rappresentazione galleggiante personalizzato in cui l'utente specifica la quantità di bit per l'esponente Dont stare male, si tratta di una chiara come il fango la prima dozzina di volte che passare attraverso di essa. Penso di poter prendere una pugnalata a chiarire in su. Si ha familiarità con la rappresentazione IEEE754-Single-Precision-Floating-Point di: che il segno bit a 1 bit. 8 bit esponente polarizzato (a 8-bit-127 eccesso notazione), ed il restante 23 bit mantissa. Quando si consente all'utente di scegliere il numero di bit nella esponente, si sta andando ad avere per rielaborare la notazione esponente a lavorare con il nuovo limite scelto dall'utente. Quale sarà il cambiamento che Cambierà la gestione sign-bit - No. Cambierà la gestione mantissa - No (si continua a convertire il mantissasignificand in formato po 'nascosto). Quindi l'unica cosa è necessario concentrarsi su è la gestione esponente. Come ci si avvicina questo richiamo, l'attuale esponente a 8 bit è in quello che viene chiamato in eccesso-127 la notazione (dove 127 rappresenta il valore più grande per 7 bit che permettono alcun pregiudizio per essere contenuta ed espressa entro il limite di corrente a 8 bit. Se la utente sceglie 6 bit come la dimensione esponente, allora quello che dovrà fornire un metodo simile per assicurare di avere un numero fisso per rappresentare la nuova notazione excess - che lavorerà all'interno del limite di utenti. Fate un limite di utenti a 6 bit, quindi una scelta per il valore dell'esponente imparziale potrebbe essere provato come 31 (i valori più grandi che possono essere rappresentati in 5-bit). a questo si potrebbe applicare la stessa logica (prendendo l'esempio 13,25 precedente). la vostra rappresentazione binaria per il numero è 1101,01 a cui si spostano i decimali 3 posizioni a sinistra per ottenere 1,10,101 mila che vi dà un pregiudizio esponente 3 Nel tuo caso esponente 6 bit si dovrebbe aggiungere 3 31 per ottenere il tuo eccesso-31 notazione per l'esponente. 100010. poi mettere la mantissa in formato po 'nascosto (cioè cadere il leader 1 da 1,10,101 mila conseguente vostro costume nuovo di Rappresentanza Tommy precisione: Con 1-bit di segno-bit. 6-bit esponente polarizzato (in 6 bit eccesso-31 notazione), ed il restante 25 bit mantissa. Le stesse regole si applicherebbero a invertire il processo per ottenere il vostro numero in virgola mobile ritorno dalla notazione di cui sopra. (Usando solo 31 invece di 127 per eseguire la polarizzazione fuori l'esponente) Speriamo che questo aiuta in qualche modo. Non vedo molto altro si può fare se si sta veramente andando per consentire una dimensione esponente selezionata dall'utente. Ricordate, l'IEEE-754 non era standard di qualcosa che è stato indovinato presso e un sacco di buon ragionamento e trade-off è andato in arrivo il layout 1-8-23 segno-esponente-mantissa. Tuttavia, credo che l'allenamento fa un grande lavoro a che sia necessario capire con fermezza lo standard. Ora completamente perso e non affrontate in questa discussione è quali effetti questo avrebbe sulla gamma di numeri che potrebbero essere rappresentati in questa rappresentazione su misura di precisione in virgola mobile. I havent guardato, ma il limite principale sembrerebbe essere una riduzione della maxmin che potrebbe essere rappresentato. ha risposto 2 marzo 15 a 10:53

No comments:

Post a Comment