Differenze tra le versioni di "Sostituire gli operatori logici di spostamento dei bit con semplici operazioni"

Da Gambas-it.org - Wikipedia.
Riga 17: Riga 17:
  
 
===Operazione per lo spostamento a ''sinistra''===
 
===Operazione per lo spostamento a ''sinistra''===
Per ottenere lo spostamento a ''sinistra'' di un bit si effettuerà una moltiplicazione del valore del bit da spostare per 2 elevato alla potenza determinata dal valore del secondo operando, ossia del numero dello spostamento delle posizioni da effettuarsi:
+
Per ottenere lo spostamento a ''sinistra'' di un bit si effettuerà una moltiplicazione del valore del bit da spostare per 2 elevato alla potenza determinata dal valore del secondo operando |[[#Note|1]]|, ossia del numero dello spostamento delle posizioni da effettuarsi:
 
  a << b  →  a * 2<SUP>b</sup>
 
  a << b  →  a * 2<SUP>b</sup>
 
Esempio:
 
Esempio:
Riga 34: Riga 34:
 
In Gambas la sintassi è:
 
In Gambas la sintassi è:
 
  Risultato = Numero \ CInt(2 ^ Spostamento)
 
  Risultato = Numero \ CInt(2 ^ Spostamento)
 +
 +
 +
 +
=Note=
 +
[1] Si moltiplica per due, poiché il valore del numero binario viene costruito moltiplicando le cifre di tale numero per le potenze di 2.<BR>Esempio:
 +
10101010 = 1*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0  = 170

Versione delle 02:53, 16 ago 2013

Come è noto, nel linguaggio C fra gli operatori cosiddetti bitwise, ossia quegli operatori capaci di operare sui singoli bit, vi sono anche gli operatori di spostamento (shift) dei bit, che effettuano un spostamento a sinistra di un bit:

<<

oppure uno spostamento a destra:

>>

Lo spostamento del bit interessato avviene di un numero di posizioni uguale al valore del secondo operando.


Lo spostamento in Gambas

In Gambas, come si sa, esistono due funzioni specifiche per effettuare lo spostamento dei bit a sinistra:

Shl(valore, spostamento)

o a destra:

Shr(valore, spostamento)


Possiamo, però, ottenere lo stesso risultato mediante semplici operazioni.


Operazione per lo spostamento a sinistra

Per ottenere lo spostamento a sinistra di un bit si effettuerà una moltiplicazione del valore del bit da spostare per 2 elevato alla potenza determinata dal valore del secondo operando |1|, ossia del numero dello spostamento delle posizioni da effettuarsi:

a << b  →  a * 2b

Esempio:

6 << 3  →  6 * 23  →  6 * 8  →  48

In Gambas la sintassi è:

Risultato = Numero * CInt(2 ^ Spostamento)


Operazione per lo spostamento a destra

Per ottenere lo spostamento a destra di un bit si effettuerà una divisione del valore del bit da spostare per 2 elevato alla potenza determinata dal valore del secondo operando, ossia del numero dello spostamento delle posizioni da effettuarsi:

a >> b  →  a \ 2b

Esempio:

16 >> 3  →  16 \ 23  →  16 \ 8  →  2

In Gambas la sintassi è:

Risultato = Numero \ CInt(2 ^ Spostamento)


Note

[1] Si moltiplica per due, poiché il valore del numero binario viene costruito moltiplicando le cifre di tale numero per le potenze di 2.
Esempio:

10101010 = 1*2^7 + 0*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0  = 170