sql >> Databasteknik >  >> RDS >> Oracle

oracle bitand funktion

I binärt betyder "set" "har värdet 1". "Inte angivet" betyder "har värdet 0".

Från Oracle-dokumenten för BITAND:

"Resultatet beräknas i flera steg. Först ersätts varje argument A med värdet SIGN(A)*FLOOR(ABS(A)). Denna omvandling har effekten att varje argument trunkeras mot noll. Därefter, varje argument A (som måste nu vara ett heltalsvärde) omvandlas till ett n-bitars tvås komplement binärt heltalsvärde. De två bitvärdena kombineras med en bitvis OCH-operation. Slutligen konverteras den resulterande n-bitars tvås komplementvärde tillbaka till NUMBER."

Enkelt uttryckt, denna funktion trunkerar dess argument, konverterar dem till ett binärt tal (för närvarande begränsat till 128 bitar), OCH är de två binära talen tillsammans, och returnerar resultatet av att konvertera det binära talet tillbaka till ett TAL.

Här är resultatet av alla möjliga kombinationer av noll och ett:

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;

Ett mer komplext exempel skulle vara att OCH tillsammans 11 och 5. I binärt blir 11 decimal "1011". 5 decimal blir "0101" binär. Om du OCH dessa värden tillsammans, som i

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

du får 1 binär, som fortfarande är 1 när den konverteras tillbaka till decimal.

Dela och njut.




  1. MSSQL-inspelningsdatum/tid raderas automatiskt

  2. Genererar unika spårningsnummer

  3. mysql:instr ange ordgränser

  4. Hives hour() funktion returnerar 12 timmars klockvärde