Битовые функции


MySQL использует для двоичных операций 64-битовые величины BIGINT, следовательно, для двоичных операторов максимальный диапазон составляет 64 бита.

  • |

    Побитовое ИЛИ

    mysql> SELECT 29 | 15;
            -> 31
    

    Результат является беззнаковым 64-битовым целым числом.

  • &

    Побитовое И

    mysql> SELECT 29 & 15;
            -> 13
    

    Результат является беззнаковым 64-битовым целым числом.

  • ^

    Побитовый XOR (побитовое сложение по модулю 2)

    mysql> SELECT 1 ^ 1;
            -> 0
    mysql> SELECT 1 ^ 0;
            -> 1
    mysql> SELECT 11 ^ 3;
            -> 8
    

    Результат - беззнаковое 64-битное целое число.

    XOR был реализован в MySQL 4.0.2.

  • <<

    Сдвиг числа двойной длины (BIGINT) влево:

    mysql> SELECT 1 << 2;
            -> 4
    

    Результат является беззнаковым 64-битовым целым числом.

  • >>

    Сдвиг числа двойной длины (BIGINT) вправо:

    mysql> SELECT 4 >> 2;
            -> 1
    

    Результат является беззнаковым 64-битовым целым числом.

  • ~

    Инвертировать все биты:

    mysql> SELECT 5 & ~1;
            -> 4
    

    Результат является беззнаковым 64-битовым целым числом.

  • BIT_COUNT(N)

    Возвращает число битов, указанное в аргументе N:

    mysql> SELECT BIT_COUNT(29);
            -> 4