битовая маска mysql

101
22 апреля 2021, 11:10

подскажите у меня есть таблица в ней числа, мне надо перенести с этой таблицы в другую 2 значения с битовой маской? непонимаю я в них? с примера 2 числа 1067254670,1609105408

есть кусок ява кода в котором я проверяю значения

  java public static int getVariationId1(int augmentMask)
    {
        final int mask = 0b1111111111111111;
        return mask & augmentMask;
    }
    public static int getVariationId2(int augmentMask)
    {
        final int mask = 0b1111111111111111;
        return mask & augmentMask >>> 16;
    }
910 (1067254670-число)
16285 (1067254670-число)
0 (1609105408-число)
24553 (1609105408-число) 
как сделать тоже самое через запрос mysql?
Answer 1

MySQL: Операторы

mysql> SELECT 1067254670 & b'1111111111111111' val1,
    -> (1067254670 >> 16) & b'11111111111111111' val2,
    -> 1609105408 & b'11111111111111111' val3,
    -> (1609105408 >> 16) & b'11111111111111111' val4;
+------+-------+-------+-------+
| val1 | val2  | val3  | val4  |
+------+-------+-------+-------+
|  910 | 16285 | 65536 | 24553 |
+------+-------+-------+-------+
1 row in set (0.01 sec)

Обрезку в нужное количество битов выполнять с помощью оператора AND либо (для ровно 1-2-3-4-8 байтов) с помощью CAST к соотв. типу.

Также всё то же можно выполнить и арифметическими операторами.

mysql> SELECT 1067254670 MOD 65536 val1,
    -> 1067254670 DIV 65536 val2,
    -> 1609105408 MOD 65536 val3,
    -> 1609105408 DIV 65536 val4;
+------+-------+------+-------+
| val1 | val2  | val3 | val4  |
+------+-------+------+-------+
|  910 | 16285 |    0 | 24553 |
+------+-------+------+-------+
1 row in set (0.00 sec)

Тут даже старшие биты занулять не придётся.

READ ALSO
Ошибка в синтаксисе Operand should contain 1 column(s)

Ошибка в синтаксисе Operand should contain 1 column(s)

Всем привет, работаю с cs cart и имею такой запрос

117
Не могу создать внешний ключ в бд

Не могу создать внешний ключ в бд

Помогите, пожалуйста)Вроде нет проблем, поля одинаковые, но не хочет связыватьПоследовательность правильная

117
ERROR 1728 (HY000): Cannot load from mysql.user. The table is probably corrupted

ERROR 1728 (HY000): Cannot load from mysql.user. The table is probably corrupted

Ошибка при создании пользователя

189
В чём ошибка в реализации обработчика AJAX-запроса

В чём ошибка в реализации обработчика AJAX-запроса

Задача такая - с помощью jax-запроса передать данные на обработчик, который с полученными данными в качестве аргументов вызовет функцию

110