sokol
Zavolga.Net
BIT_OR и старший бит
Вобщем непонятки у меня по поводу BIT_OR...
В мануале вроде как написано что он делает сложение с 64 битной точностью.
В полях хранится INT в котором иногда проставляется старший бит т.е. значение становится отрицательным, типа -2147483647
или 10000000000000000000000000000001 в бинарном представлении.
MySQL при запросе вида:
SELECT BIT_OR(filed) AS bitset FROM table GROUP_BY field2
выдает что bitset = 0, хотя явно видно что если в полях содержатся вышеприведенные значения, то быть того просто не может.
Я не пойму, даже если он отбрасывает старший бит расширяя до 64 битов, то все равно 0 никак не получается.
На положительных числах работает нормально.
-~{}~ 10.05.04 23:44:
Кстати
SELECT -2147483647 | -2147483647;
-> 0
это так и должно?
-~{}~ 10.05.04 23:45:
Как сделать чтобы побитовые операции производились только на 32 битах. Такое возможно?
Вобщем непонятки у меня по поводу BIT_OR...
В мануале вроде как написано что он делает сложение с 64 битной точностью.
В полях хранится INT в котором иногда проставляется старший бит т.е. значение становится отрицательным, типа -2147483647
или 10000000000000000000000000000001 в бинарном представлении.
MySQL при запросе вида:
SELECT BIT_OR(filed) AS bitset FROM table GROUP_BY field2
выдает что bitset = 0, хотя явно видно что если в полях содержатся вышеприведенные значения, то быть того просто не может.
Я не пойму, даже если он отбрасывает старший бит расширяя до 64 битов, то все равно 0 никак не получается.
На положительных числах работает нормально.
-~{}~ 10.05.04 23:44:
Кстати
SELECT -2147483647 | -2147483647;
-> 0
это так и должно?
-~{}~ 10.05.04 23:45:
Как сделать чтобы побитовые операции производились только на 32 битах. Такое возможно?