Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Operaattorikikkoja:

peki [29.03.2004 09:15:15]

#

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?

Antti Laaksonen [29.03.2004 12:27:44]

#

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

tn [30.03.2004 18:08:42]

#

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?

Createman [30.03.2004 21:23:01]

#

lainaus:

a = a xor a ' nopea nollaus

Siis tekeekö toi saman kuin a = 0? Jos tekee, niin onko se nopeampi kuin edellä mainittu tapa?

peki [30.03.2004 21:31:45]

#

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ää.

Antti Laaksonen [31.03.2004 13:31:10]

#

VB:n tapauksessa mahdollinen nopeusetu on niin mitätön, ettei moisia kikkoja kannattane käyttää koodin selkeyden kustannuksella.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta