homeboekenlinksledenabonneer je :Blijf op de hoogte door je te abonneren op de vbvoorbeelden RSS Niews Feed!Blijf op de hoogte door vbvoorbeelden te volgen op Twitter!Blijf op de hoogte door fan te worden van vbvoorbeelden op Facebook!
Visual Basic 2008 en 2010 Voorbeelden en Boeken Microsoft Visual Studio 2010Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

visual basic 2008 voorbeelden en boeken / visual basic 2010 voorbeelden en boeken

4.4. Bitshift Operatoren

Print Email Deel op FacebookDeel op TwitterDeel op DiggBookmark op Google BookmarksDeel op del.icio.usOverige Sociale Netwerksites...

Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Bitshift operatoren als >> en << verschuiven de bits van de binaire voorstellingen van gehele getallen respectievelijk naar rechts of naar links. De rechter operand geeft aan hoeveel in rang wordt verschoven.
Visual Basic Broncode
Module Example1
    Sub Main()
        Console.WriteLine(7 << 2)
        Console.WriteLine(7 >> 1)
        '
        Dim number As Integer = 7
        number <<= 2                                                       ' (1)
        Console.WriteLine(number)
        number = 7
        number >>= 1                                                       ' (2)
        Console.WriteLine(number)
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
28
3
28
3
Verschuif men de bits van 111 ( decimaal 7 ) 2 posities op naar links dan bekomt men 11100 ( decimaal 28 ). De bijgekomen bits worden opgevuld met een 0-bit.
Het verschuiven van een bit naar links, zal dit nummer met 2 vermenigvuldigen. 7 met 2 bits opschuiven naar links zal dus 7 twee maal vermenigvuldigen met 2 ( 7 * 2 * 2 = 28 ).

Verschuif de bits van 111 ( decimaal 7 ) 1 positie op naar rechts, dan valt de rechtse bit er af en bekom je 011 of 3 ( decimaal ).
Het verschuiven van de bits naar rechts zal het getal delen door 2.

Deze vormen van vermenigvuldiging en deling ( altijd met factor of deler 2 ) is sneller dan de normale vermenigvuldiging of deling die de processor maakt.

4.4.1. Bitshift en Toekennings Operatoren

Ook voor deze bitshift operatoren bestaan assignment versies ( (1) en (2) ).

4.4.2. Waarom Bitshift Operatoren Gebruiken

Stel dat we van een getal de meest rechtse bit die 1 is wensen te weten. Dan kan dit simpel met de And en >> operator worden bepaald (1).

Een alternatief zou erin bestaan dit op te lossen aan de hand van een deling door 2 tot de rest na deling door 2 nul oplevert (2).
Visual Basic Broncode
Module Example2
    Sub Main()
        Dim value As Integer
        Dim position As Integer
        Dim counter As Integer
        Dim start As Integer
        '
        value = 12
        position = 1
        Do While (value And 1) = 0                                        ' (1)
            value >>= 1
            position += 1
        Loop
        Console.WriteLine("12 : Bit at position " & position & _
                          " from the right is 1.")
        '
        value = 12
        position = 1
        Do While value Mod 2 <> 1                                         ' (2)
            value /= 2
            position += 1
        Loop
        Console.WriteLine("12 : Bit at position " & position & _
                          " from the right is 1.")
        '
        start = Environment.TickCount()
        For counter = 1 To 10000000                                       ' (3)
            value = counter
            position = 0
            '
            Do While (value And 1) = 0                                    ' (1)
                value >>= 1
                position += 1
            Loop
        Next
        Console.WriteLine("Bitwise calculation done in " & _
                          Environment.TickCount() - start & " tickcounts.")
        '
        start = Environment.TickCount()
        For counter = 1 To 10000000                                       ' (3)
            value = counter
            position = 0
            '
            Do While value Mod 2 <> 1                                     ' (2)
                value /= 2
                position += 1
            Loop
        Next
        Console.WriteLine("Normal calculation done in " & _
                          Environment.TickCount() - start & " tickcounts.")
        '
        Console.ReadLine()
    End Sub
End Module
Visual Basic Output
12 : Bit at position 3 from the right is 1.
12 : Bit at position 3 from the right is 1.
Bitwise calculation done in 125 tickcounts.
Normal calculation done in 499 tickcounts.
Als we werkwijzen (1) en (2) voldoende herhalen (3) merk je duidelijk een snelheidsverschil op.

Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Visual Basic 2008 & 2010 Boeken

Het Groene Visual Basic 2008 & 2010 Voorbeelden Boek Het Blauwe Visual Basic 2008 & 2010 Voorbeelden Boek Het Rode Visual Basic 2008 & 2010 Voorbeelden Boek

Bevalt een artikel je, dan kan je de inhoud van vbvoorbeelden ook reclamevrij in boekvorm verkrijgen.

De inhoud is verdeeld over 3 boeken, Het Groene, Het Blauwe en Het Rode Visual Basic 2008 & 2010 Voorbeelden Boek.

Klik hier voor meer informatie.

Berichten

Fast UML Sequence Diagram Editor