|
|
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Надо замутить что-то типа select * from mytable where get_bit(flags,5)=1 вот этот самый get_bit как получить. То есть, интересует чему равен пятий(n-ый) бит числа в двоичном представлении. Например 77777 = 10010111111010001 пятый бит равен 0. Надеюсь, понятно объяснил... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 14:30 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Можно строкой хранить, но тогда места будет много занимать. Хочется оптимизировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 14:36 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Есть AND по маске. Есть целочисленный % с маской. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 14:41 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
miksoft, под полным перебором ты имеешь ввиду, что индексация не будет участвовать в процессе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 15:09 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Зависит от структуры хранения данных и текста запроса. Но ЭТО условие будет обрабатываться строго полным сканом - возможно, что и индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 15:45 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Товарищи, будет ли целесообразнее создать 32 поля со значением boolean или все таки делать вышеописанным способом? В таблице всего лишь несколько тысяч записей. Но этот запрос выполняется несколько десятков раз в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 22:18 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
BooksMaster, Имхо, это быстрее попробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 22:47 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 23:22 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
вадя Код: sql 1. BIT_COUNT не нужен. Вот так вполне сработает: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2016, 23:27 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
miksoftвадя Код: sql 1. BIT_COUNT не нужен. Вот так вполне сработает: Код: sql 1. т.е. всё что больше 0 - true, 0=false ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 07:54 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
вадят.е. всё что больше 0 - true, 0=false ? Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 09:03 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
miksoftBooksMaster, BIT_AND() Но будет полный перебор таблицы с вытекающим быстродействием. но мы же знаем, что если определенный бит установлен, то число точно больше чем N^2, а значит можно добавить условие и будет работать индекс. Иногда. Скорее всего не очень поможет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 11:01 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
netwindно мы же знаем, что если определенный бит установлен, то число точно больше чем N^2, а значит можно добавить условие и будет работать индекс.Это возможно только для самого старшего бита из используемых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 11:06 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
Старшего бита МАНТИССЫ. Самый старший - может оказаться знаковым... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 11:41 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
AkinaСтаршего бита МАНТИССЫ. Самый старший - может оказаться знаковым... Может. Но не окажется если объявить как unsigned. Очевидно, что и порядок упаковки этих флажков надо выбирать с умыслом. Но если речь всего лишь о паре тысяч записей, может не надо ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 11:48 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
netwindМожет. Но не окажется если объявить как unsigned. Угу. Есть и ещё одна опасность. Неиспользуемые биты обычно игнорируются, и к ним не применяется принудительный сброс. Что может при попытке арифметических, а не логических, операторов, дать неприятный эффект. Да и приведение типов по умолчанию обычно интерпретирует старший бит именно как знаковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 11:51 |
|
||
|
получить определенный бит числа
|
|||
|---|---|---|---|
|
#18+
AkinaСамый старший - может оказаться знаковым...Да, условие проверки для самого старшего придется писать иначе. Например, flags < 0, если нужно найти записи с установленным самым старшим битом. Тут подразумевается, что используются целочисленные типы данных семейства int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2016, 12:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39175110&tid=1832127]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
216ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
75ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 545ms |

| 0 / 0 |
