Er det muligt at ændre bit direkte i en VB byte?

Tags:    visual-basic

Joachim Boll

Er det muligt at ændre bit direkte i en VB byte?

hvis ikke, er det så muligt at lave binære konstanter

eks.

A= 00001001b

jeg har ikke kunne finde nog i VB manualen



1 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Joachim Boll

Er det muligt at ændre bit direkte i en VB byte?

hvis ikke, er det så muligt at lave binære konstanter

eks.

A= 00001001b

jeg har ikke kunne finde nog i VB manualen


Ja, du kan godt ændre bits direkte i en "VB Byte". De forskellige bit har forskellige værdier (mindste bit først):

<pre>
Bitnr. Hexværdi Decimal
-------------------------
0 &H01 1
1 &H02 2
2 &H04 4
3 &H08 8
4 &H10 16
5 &H20 32
6 &H40 64
7 &H80 128
</pre>

Lad os sige at du har denne byte: 0000-0000, der simpelthen svarer til 0. Du vil gerne "tænde" bit 4 og bit 0, så byten kommer til at se således ud: 0001-0001 (11 i Hex)

Det gøres således i VB:

<pre>
Dim myByte As Byte
Let myByte = 0 ' ikke strengt nødvendigt

' Tænd byte 0 uanset hvad den er i forvejen
Let myByte = myByte Or &H1

'Tænd byte 4 uanset hvad den er i forvejen
Let myByte = myByte Or &H10

Debug.print Hex(myByte) & "h" ' skal gerne skrive 11h
</pre>

Lad os nu sige, at du gerne vil slukke disse bits igen:

<pre>
' Sluk bit 0 uanset hvad den er i forvejen:
Let myByte = myByte And (&HFF - &H1)

'Sluk bit 4 uanset hvad den er i forvejen
Let myByte = myByte And (&HFF - &H10)

Debug.print Hex(myByte) & "h" ' skal gerne skrive 0h
</pre>

For at sammenfatte det hele kort, så bruger du altså tabellen øverst, når du skal vælge en bit. Hvis du skal TÆNDE en bit, bruger du formlen:

<pre>myByte = myByte Or bitVærdi</pre>

hvor bitVærdi er en værdi fra tabellen.

Hvis du vil SLUKKE en bit, bruger du formlen:

<pre>myByte = myByte AND (&HFF - bitVærdi)</pre>

Det skulle vist være det hele.

Software is here and now but rock and roll is forever.

[Redigeret d. 29/08-03 06:51:57 af Herluf Hermansen]



t