Differenze tra le versioni di "Distinguere ogni byte della rappresentazione esadecimale di un valore decimale"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 1: | Riga 1: | ||
− | + | Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc). Quando un numero viene salvato in memoria, vengono scritti in ciascuna cella i singoli valori che insieme costituiscono il valore numerico salvato. <SUP>[[[#Note|Nota 1]]]</sup> | |
− | + | Così, se ad esempio il valore decimale iniziale è ''123456'', i singoli byte della corrispondente sua rappresentazione esadecimale sono ''00|01|E2|40'': | |
<TABLE> | <TABLE> | ||
− | <TR><TD align=center>Indice | + | <TR><TD align=center>Indice</td><TD align=center></td><TD align=center>singolo byte</td></tr> |
<TR><TD align=center>[0]</td><TD align=center> <- </td><TD align=center>00</td></tr> | <TR><TD align=center>[0]</td><TD align=center> <- </td><TD align=center>00</td></tr> | ||
<TR><TD align=center>[1]</td><TD align=center> <- </td><TD align=center>01</td></tr> | <TR><TD align=center>[1]</td><TD align=center> <- </td><TD align=center>01</td></tr> | ||
Riga 11: | Riga 11: | ||
− | + | Per conoscere i singoli byte esadecimali che compongono un numero, è possibile adottare alcune modalità. | |
+ | |||
+ | ===Uso della funzione ''Shr( )''=== | ||
'''Public''' Sub Main() | '''Public''' Sub Main() | ||
Dim i As Integer | Dim i As Integer | ||
− | + | ||
− | + | i = 123456 | |
− | + | ||
− | + | Print Hex(Shr(i And &FF000000&, 24), 2);; | |
+ | Print Hex(Shr(i And &FF0000&, 16), 2);; | ||
+ | Print Hex(Shr(i And &FF00&, 8), 2);; | ||
+ | Print Hex(i And &FF, 2) | ||
− | + | '''End''' | |
− | + | ||
− | + | ||
− | + | ===Uso di un Puntatore=== | |
+ | '''Public''' Sub Main() | ||
+ | Dim c, i As Integer | ||
+ | Dim p As Pointer | ||
− | + | i = 123456 | |
− | + | ||
− | + | p = VarPtr(i) | |
− | + | ||
− | + | For c = 3 To 0 Step -1 | |
− | + | Print Hex(Byte@(p + c), 2);; | |
− | + | Next | |
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | =Note= | ||
+ | [1] Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunqueda occupare, viene tenuto conto ovviamente anche del "''tipo''" di valore dichiarato. |
Versione attuale delle 03:03, 30 mag 2017
Ogni valore numerico può essere rappresentato in varie modalità (decimale, esadecimale, ottale, etc). Quando un numero viene salvato in memoria, vengono scritti in ciascuna cella i singoli valori che insieme costituiscono il valore numerico salvato. [Nota 1]
Così, se ad esempio il valore decimale iniziale è 123456, i singoli byte della corrispondente sua rappresentazione esadecimale sono 00|01|E2|40:
Indice | singolo byte | |
[0] | <- | 00 |
[1] | <- | 01 |
[2] | <- | E2 |
[3] | <- | 40 |
Per conoscere i singoli byte esadecimali che compongono un numero, è possibile adottare alcune modalità.
Uso della funzione Shr( )
Public Sub Main() Dim i As Integer i = 123456 Print Hex(Shr(i And &FF000000&, 24), 2);; Print Hex(Shr(i And &FF0000&, 16), 2);; Print Hex(Shr(i And &FF00&, 8), 2);; Print Hex(i And &FF, 2) End
Uso di un Puntatore
Public Sub Main() Dim c, i As Integer Dim p As Pointer i = 123456 p = VarPtr(i) For c = 3 To 0 Step -1 Print Hex(Byte@(p + c), 2);; Next End
Note
[1] Durante la scrittura del valore in memoria, con riferimento alla quantità di byte comunqueda occupare, viene tenuto conto ovviamente anche del "tipo" di valore dichiarato.