/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MySQL]Bitwise funktion
Fra : Dan Molberg


Dato : 07-03-04 03:36

Sidder her med en gammel MySQL 3.23.49, som jeg skal have til følgenden.

Har et char felt som kan have to bit sat, altså fra 00 til 11 (0-3) og skal
sammenligne med 01 eller 10 (1 eller 2)

Det jeg vil have er
1 (operation) 0 = 1
1 (operation) 1 = 0
1 (operation) 2 = 1
1 (operation) 3 = 0
2 (operation) 0 = 1
2 (operation) 1 = 1
2 (operation) 2 = 0
2 (operation) 3 = 0

--
MVH Dan Molberg
http://beyond.repair.dk/



 
 
Michael Zedeler (07-03-2004)
Kommentar
Fra : Michael Zedeler


Dato : 07-03-04 12:48

Dan Molberg wrote:
> Sidder her med en gammel MySQL 3.23.49, som jeg skal have til følgenden.
>
> Har et char felt som kan have to bit sat, altså fra 00 til 11 (0-3) og skal
> sammenligne med 01 eller 10 (1 eller 2)
>
> Det jeg vil have er
> 1 (operation) 0 = 1
> 1 (operation) 1 = 0
> 1 (operation) 2 = 1
> 1 (operation) 3 = 0
> 2 (operation) 0 = 1
> 2 (operation) 1 = 1
> 2 (operation) 2 = 0
> 2 (operation) 3 = 0

Det ligner noget med XOR. Hvad med at gøre et forsøg selv...?

M.

Dan Molberg (07-03-2004)
Kommentar
Fra : Dan Molberg


Dato : 07-03-04 13:20

In news:q_D2c.105765$jf4.6354478@news000.worldonline.dk,
Michael Zedeler <michael@zedeler.dk> typed:
> Dan Molberg wrote:
>> Sidder her med en gammel MySQL 3.23.49, som jeg skal have til
>> følgenden.
>>
>> Har et char felt som kan have to bit sat, altså fra 00 til 11 (0-3)
>> og skal sammenligne med 01 eller 10 (1 eller 2)
>>
>> Det jeg vil have er
>> 1 (operation) 0 = 1
>> 1 (operation) 1 = 0
>> 1 (operation) 2 = 1
>> 1 (operation) 3 = 0
>> 2 (operation) 0 = 1
>> 2 (operation) 1 = 1
>> 2 (operation) 2 = 0
>> 2 (operation) 3 = 0
>
> Det ligner noget med XOR. Hvad med at gøre et forsøg selv...?
>
> M.
"XOR was added in version 4.0.2. ".... er lidt nyere end 3.23.49..... og tro
mig jeg har gjort MANGE forsøg.... kan bare ikke ramme ved begge sat....
altså 1 (operation) 3 = 0 og 2 (operation) 3 = 0. Har prøvet a & (~b)) |
((~a) & b) (som jo er xor)

--
MVH Dan Molberg
http://beyond.repair.dk/



Michael Zedeler (07-03-2004)
Kommentar
Fra : Michael Zedeler


Dato : 07-03-04 13:29

Dan Molberg wrote:

> In news:q_D2c.105765$jf4.6354478@news000.worldonline.dk,
> Michael Zedeler <michael@zedeler.dk> typed:

>>Det ligner noget med XOR. Hvad med at gøre et forsøg selv...?

> "XOR was added in version 4.0.2. ".... er lidt nyere end 3.23.49..... og tro
> mig jeg har gjort MANGE forsøg.... kan bare ikke ramme ved begge sat....
> altså 1 (operation) 3 = 0 og 2 (operation) 3 = 0. Har prøvet a & (~b)) |
> ((~a) & b) (som jo er xor)

XOR er defineret på følgende måde:

a XOR B := (a AND NOT b) OR (NOT a AND b)

Så er det bare at sætte det hele sammen. Det bliver nok et stort udtryk

Mvh. Michael.

Dan Molberg (07-03-2004)
Kommentar
Fra : Dan Molberg


Dato : 07-03-04 13:34

In news:tAE2c.105779$jf4.6357110@news000.worldonline.dk,
Michael Zedeler <michael@zedeler.dk> typed:
> Dan Molberg wrote:
>
>> In news:q_D2c.105765$jf4.6354478@news000.worldonline.dk,
>> Michael Zedeler <michael@zedeler.dk> typed:
>
>>> Det ligner noget med XOR. Hvad med at gøre et forsøg selv...?
>
>> "XOR was added in version 4.0.2. ".... er lidt nyere end
>> 3.23.49..... og tro mig jeg har gjort MANGE forsøg.... kan bare ikke
>> ramme ved begge sat.... altså 1 (operation) 3 = 0 og 2 (operation) 3
>> = 0. Har prøvet a & (~b)) | ((~a) & b) (som jo er xor)
>
> XOR er defineret på følgende måde:
>
> a XOR B := (a AND NOT b) OR (NOT a AND b)
Sorry jeg skrev xor når jeg mente bitwise xor (^) men ellers er det jo det
samme:
(a & (~b)) | ((~a) & b)
--
MVH Dan Molberg
http://beyond.repair.dk/



Michael Zedeler (07-03-2004)
Kommentar
Fra : Michael Zedeler


Dato : 07-03-04 18:18

Dan Molberg wrote:
> In news:tAE2c.105779$jf4.6357110@news000.worldonline.dk,
> Michael Zedeler <michael@zedeler.dk> typed:
> [klip]
>>XOR er defineret på følgende måde:
>>
>>a XOR B := (a AND NOT b) OR (NOT a AND b)
>
> Sorry jeg skrev xor når jeg mente bitwise xor (^) men ellers er det jo det
> samme:
> (a & (~b)) | ((~a) & b)

Jeg beklager også - jeg læste kun dit indlæg med et halv øje. Hvis du
gerne vil lave en logisk XOR baseret på en værdi i en bestemt bit, kan
du i nogle situationer være nødt til at skifte den byte som du opererer på.

Hvis du f. eks. ønsker at regne a AND b ud hvor a er 2. bit i X og b er
1. bit i Y, får man:

((X >> 1) AND 1) AND (Y AND 1)

I MySQL burde ovenstående blive opfattet som et logisk sand for værdien
1 og logisk falsk for værdien 0. Ellers skal man lige gøre sådan her:

((X >> 1) AND 1) AND (Y AND 1) == 1

....så er du sikker.

M.

Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste