Tietääkö joku mukavia pikku kikkoja binaarioperaattoreilla(AND, OR, NOT, XOR, <<, >>)?
itse tiedän vain muutaman:
a = a xor a ' nopea nollaus a = a xor 11111111111111111111111111111111 ' olettaen, että integer muuttuja on 32 bittinen. Binaarivastaluku on kätevä tehtäessä käänteisvärejä(rgb(r, g, b) xor 11111111111 ykkösiä on vähemmän, kuin pitäisi)) a = 2 << a ' 2^a (.NET käsky) a = x >> a ' (.NET käsky) toimii näin: jos x = 256 => x = 128, jos x = 64 => x = 32
Jos joku tietää, kirjoittaisiko sen tähän ketjuun?
Kahden (luku)muuttujan arvon voi vaihtaa keskenään kolmella Xor-operaatiolla:
a = 12: b = 34 a = a Xor b b = a Xor b a = a Xor b 'a = 34, b = 12
Eikös ton käänteisvärin saa ihan laittamalla:
a = not a (jos sitä noin vb:ssä käytetään)
Ja kuinka tuo pekin viimenen muka x :ää muuttaa?
lainaus:
a = a xor a ' nopea nollaus
Siis tekeekö toi saman kuin a = 0? Jos tekee, niin onko se nopeampi kuin edellä mainittu tapa?
tn: eihän not käskyä voi vb:ssä noin käyttää. Vai voiko!?
Hups! pikku type sen siis pitäis olla:
x = x >> 1
Createman: Ainakin assmeblerissä tuo on älyttömästi nopeampi. Oletettavasti vb:n kääntäjä ymmärtää optimoida ja laittaa a = 0 tilalle a xor a. Siitä ei voi olla varma, joten jos yrität koodata nopeaa ohjelmaa kannattaa xor:ia käyttää.
VB:n tapauksessa mahdollinen nopeusetu on niin mitätön, ettei moisia kikkoja kannattane käyttää koodin selkeyden kustannuksella.
Aihe on jo aika vanha, joten et voi enää vastata siihen.