Crea sito
Facebook GooglePlus Twitter
Diaspora YouTube LinkeIn

BC: operazioni e conversione numeri

Cominciamo a utilizzare la shell bash linux

BC: operazioni e conversione numeri

Messaggio da leggereda benedetto il 11/11/2012, 1:10

Spesso mi trovo a dover decodificare messaggi in semplice ASCII, in cui 65 corrisponde ad 'A' e cosi' via.
Per questo tipo di operazioni (ma non solo) si ricorre volentieri a bc, un programma in grado di operare con i numeri in modo semplice ed avanzato.
Ci sono 4 variabili principali usate per il controllo: scale, ibase, obase, last.
scale identifica quanti numeri dopo la virgola lasciare. Se ad esempio scriviamo:

Codice: Seleziona tutto
[email protected] ~ $ bc -q
1/3
0

scale=5
1/3
.33333

quit


Vediamo che eseguendo 1/3 ci viene restituito 0, questo perchè all'inizio scale vale 0.
Se impostiamo, come sopra, scale=5 ecco che compaiono 5 cifre dopo la virgola.

Veniamo ora a ibase e obase, che servono per dire a "bc" la base di conversione (di default 10) rispettivamente di input e di output. Esempio da decimale a binario:
Codice: Seleziona tutto
obase = 2
17
10001

Se invece volessimo da ottale a decimale:
Codice: Seleziona tutto
ibase = 8
123
83

Ovviamente i due codici nella stessa sessione di bc non funzionano perchè bisognerebbe resettare a 10 obase :D

Ed ecco un misto, da esadecimale a binario:
Codice: Seleziona tutto
ibase = 16
obase = 2
72
1100100


Moooolto utile, soprattutto in pipes, con un unico comando:
Codice: Seleziona tutto
[email protected] ~ $ echo "obase=2; 12" | bc
1100


L'ultima variabile, last, indica l'ultimo risultato, l'Ans delle calcolatrici scientifiche ;)

Le operazioni eseguibili sono le solite, comprese quelle di confronto, cioè
+ - * / ^ % ++ -- += -= *= /=
< > <= >= == != && ||
Ma non mi dilungo, anche perchè se non le sapete basta un "man bc" e scoprirete tutto ;)

Alcune funzioni utili:
length(espressione) ritorna la lunghezza del numero. (123,45678 è lungo 8)
read() chiede un input all'utente e ritorna il valore inserito.
scale(espressione) numero di cifre decimali (123,45678 ne ha 5)
sqrt(espressione) ritorna la radice quadrata (SQuare RooT) di "espressione"

Ci sono molte altre cose che non sto qui a dirvi, come le conversioni in radianti ecc... potete smanettare nel "man bc" ;)

Alla prossima :mrgreen:
Elementary OS... ma nostalgia di Gentoo :geek:
Avatar utente
benedetto
Brigata Linux
 
Messaggi: 364
Iscritto il: 22/05/2012, 22:43
Località: Milanoooo

  • Condividi e Vota l'articolo
  • Condividi e questo articolo di LaScaricata

    Share on Tumblr

Torna a Shell Bash Linux

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

cron
 
Creative Commons License

Dichiarazione di non responsabilita': Nessuno dei files indicati su questo sito e' ospitato o trasmesso da questo server. I links sono forniti dagli utenti del sito, basandosi su servizi esterni. Il progetto LaScaricata non puo' essere ritenuto in alcun modo responsabile per qualsiasi pubblicazione o altra azione commessa dagli utenti. Non e' consentito usare questo sito per la distribuzione o il download di materiale se non si e' espressamente autorizzati a farlo. Siete tenuti a rispettare termini e regolamento del sito.