Visual basic - wiskunde - vraagje

  • Onderwerp starter Onderwerp starter marvy
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

marvy

Gebruiker
Lid geworden
25 dec 2000
Berichten
396
Hallo, Kan er iemand de Do While (value And 1) = 0 uitleggen van het volgend stukje?

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
value >>= 1
position += 1
Loop
Console.WriteLine("12 : Bit at position " & position & _
" from the right is 1.")
Console.ReadLine()
End Sub
End Module
 
Ik strand bij ">>=" en bij "+=".
Wat voor syntax is dat? Ben erg nieuwsgierig
 
Ik strand bij ">>=" en bij "+=".
Wat voor syntax is dat? Ben erg nieuwsgierig


12 = binair 1100
value >>= 1
shuift het register 1 keer op
wordt dus 110 = 6

positien += 1 is gelijk aan position = position +1
dit dient om te tellen hoe vaak we moeten opschuiven tot we een 1 tegenkomen !
 
Well...
Code:
Do While (value And 1) = 0
Dit is, 'ga net zolang door tot value EN 1 true zijn, en gelijk aan 0. Een beetje erg rare manier om een while() te gebruiken, maar je moet je bedenken dat een while() een boolean eet. Ik snap daarom ook niet waarom er '= 0' achter staat. Maargoed.
 
Hallo, Kan er iemand de Do While (value And 1) = 0 uitleggen van het volgend stukje?

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
value >>= 1
position += 1
Loop
Console.WriteLine("12 : Bit at position " & position & _
" from the right is 1.")
Console.ReadLine()
End Sub
End Module

12 binair is 1100.
Vanaf rechts gekeken heeft 1100 pas op de 3e positie een 1.
En dat is wat het loopje vaststelt.

Mij is het duidelijk.

Maar naar mijn mening is de volgende code:
Code:
        Do While (value And 1) = 0
            value = Int(value / 2)
            position = position + 1
        Loop
minstens :D net zo leesbaar.
 
Well...Dit is, 'ga net zolang door tot value EN 1 true zijn, en gelijk aan 0. Een beetje erg rare manier om een while() te gebruiken, maar je moet je bedenken dat een while() een boolean eet. Ik snap daarom ook niet waarom er '= 0' achter staat. Maargoed.
@Vegras
'and' en 'or' werken als operators op getallen, die je in die situatie als bitmaps moet zien.

Dus als a en b getallen zijn, dan zou je a en b beide binair moeten opschrijven.

'a and b' zal een getal opleveren met 1-en op alleen die posities, waarop zowel a en b een 1 hebben.
'a or b' zal een getal opleveren met 1-en op alleen die posities, waarop ofwel a ofwel b een 1 hebben.

Bijvoorbeeld:
3 or 5 levert op 7
3 and 5 levert op 1
12 and 1 levert op 0
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan