
La funzione bitcmp() di Scilab
La funzione bitcmp() in Scilab calcola il complemento a uno di un numero intero, bit per bit.
bitcmp(n,m)
Questa funzione ha due argomenti
- L'argomento "n" è il numero intero su cui calcolare il complemento a uno
- L'argomento "m" è il numero di bit da considerare. E' opzionale ma ti consiglio sempre di indicarlo per evitare ambiguità.
Questa operazione calcola il complemento a uno del numero "n" considerando "m" bit.
Cos'è il complemento a uno di un numero? Il complemento a uno di un numero binario si ottiene invertendo ogni bit del numero. In altre parole, tutti gli 0 diventano 1 e tutti gli 1 diventano 0. Ad esempio, il numero 5 in binario diventa 101. $$ 5_{10} = 101_2 $$ Il complemento a uno del numero si ottiene invertendo tutti i bit. Quindi, 101 diventa 010 che equivale a 2 in notazione decimale. $$ 010_2 = 2_{10}$$
Ecco un esempio pratico.
Assegna il numero 5 alla variabile "a"
a=5
Il numero decimale 5 è rappresentato come 101 in binario.
Ora utilizza la funzione bitcmp() per calcolare il complemento a uno del numero a=5 considerando una lunghezza di 3 bit.
bitcmp(a,3)
La funzione inverte i bit da 101 a 010 che equivale al numero decimale 2.
2.
Fai però attenzione a un aspetto molto importante. Quando lavori con computer e sistemi digitali, i numeri sono rappresentati con un numero fisso di bit (ad esempio, 8 bit, 16 bit, 32 bit, ecc.).
In questi casi, la funzione bitcmp() considera tutti i bit che rappresentano il numero.
Ad esempio, il numero 5 con 8 bit si rappresenta 00000101 in binario (e non 101).
bitcmp(5,8)
La funzione bitcmp() inverte tutti gli 8 bit.
Ora il risultato è 11111010 in binario che equivale al numero decimale 250.
250.
E' un risultato completamente diverso rispetto al complemento a uno del numero 5 considerando 3 bit.
Per questa ragione ti consiglio di indicare esplicitamente la lunghezza totale dei bit che vuoi utilizzare quando calcoli il complemento a 1.
Se non indichi il secondo argomento della funzione bitcmp(), Scilab considera l'intera lunghezza dei bit utilizzata per rappresentare i numeri sul tuo computer. Quindi, il risultato è generalmente un numero molto alto.