sql >> Database >  >> RDS >> Oracle

orakel bit en functie

In binair betekent "set" "heeft de waarde 1". "Niet ingesteld" betekent "heeft de waarde 0".

Uit de Oracle-documenten voor BITAND:

"Het resultaat wordt in verschillende stappen berekend. Eerst wordt elk argument A vervangen door de waarde SIGN(A)*FLOOR(ABS(A)). Deze conversie heeft tot gevolg dat elk argument naar nul wordt afgekapt. Vervolgens wordt elk argument A (dat moet nu een geheel getal zijn) wordt geconverteerd naar een n-bit twee complement binair geheel getal. De twee bit waarden worden gecombineerd met behulp van een bitsgewijze EN-bewerking. Ten slotte wordt de resulterende n-bit twee complementwaarde terug geconverteerd naar NUMBER."

Simpel gezegd, deze functie kapt zijn argumenten af, converteert ze naar een binair getal (momenteel beperkt tot 128 bits), AND zijn de twee binaire getallen samen, en retourneert het resultaat van het omzetten van het binaire getal terug naar een NUMMER.

Hier is het resultaat van alle mogelijke combinaties van nul en één:

SELECT BITAND(0, 0) AS "0, 0",  -- i.e. 0 AND 0 = 0
       BITAND(0, 1) AS "0, 1",  -- i.e. 0 AND 1 = 0
       BITAND(1, 0) AS "1, 0",  -- i.e. 1 AND 0 = 0
       BITAND(1, 1) AS "1, 1"   -- i.e. 1 AND 1 = 1
  FROM DUAL;

Een complexer voorbeeld zou zijn om 11 en 5 samen te voegen. In binair wordt 11 decimaal "1011". 5 decimaal wordt "0101" binair. Als u EN deze waarden samen, zoals in

1 0 1 1
0 1 0 1
-------
0 0 0 1

je krijgt 1 binair getal, dat nog steeds 1 is als het wordt omgezet naar decimaal.

Deel en geniet.




  1. Onjuiste syntaxis bij 'PROCEDURE' postgresql

  2. Hoe grootouder op sql-hiërarchie te tonen?

  3. Hoe werkt HANDLER FOR NOT FOUND en wat is het gebruik ervan?

  4. Oracle DB naar EF werkt niet correct voor NUMBER (2,0)