Esercitazione 2 - 23 ottobre 2014 (60 min)
Conversioni di base con il comando bc
E' possibile usare il comando
bc per effettuare conversioni arbitrarie di base. E' sufficiente impostare i parametri
obase (base dell'output) e
ibase (base dell'input): tutti i valori dati in ingresso verranno interpretati in base
ibase e tutti quelli stampati saranno in base
obase.
All'avvio di
bc, sia
ibase che
obase sono preimpostati a 10 (valore di default).
Conversione decimale -> esadecimale
Ad esempio, per convertire 128 da decimale a esadecimale si può fare come segue, usando la modalità interattiva di
bc:
il valore 128 convertito in esadecimale è
0x80. Per uscire da
bc basta premere
Ctrl+d.
Equivalentemente, si può usare
bc senza entrare in modalità interattiva come segue:
$ echo "obase=16; 128" | bc
80
dove il comando interno
echo invia la stringa
"obase=16; 128" sul canale di output standard, che viene fornito come input a
bc usando l'operatore
| (pipe) della shell.
Conversione esadecimale -> decimale
Per convertire ad esempio 0xCAFE da esadecimale a decimale si può scrivere:
$ echo "ibase=16; CAFE" | bc
51966
- Si noti che le lettere esadecimali devono essere maiuscole (es. 7E non 7e).
Operazioni aritmetiche in base 16
Infine, si possono fare operazioni aritmetiche in base 16 come segue:
$ echo "obase=16; ibase=16; A+1" | bc
B
- Attenzione: echo "ibase=2; obase=10; 10+10" | bc stampa 100, mentre echo "obase=10; ibase=2; 10+10" | bc stampa 4. Perché? (non perdeteci tempo durante l'esercitazione, provate a pensarci con calma a casa)
Esercizio 1
Facendo riferimento agli
operandi e ai modi di indirizzamento della memoria nell'ISA IA32, si risponda alle domande del seguente
questionario.
Esercizio 2
Facendo riferimento alle
istruzioni di movimento dati nell'ISA IA32, si risponda alle domande del seguente
questionario.
Esercizio 3
Facendo riferimento alle
istruzioni aritmetico-logiche nell'ISA IA32, si risponda alle domande del seguente
questionario.