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

start [/forum/topic.php?fid=47&tablet=1&tid=1832127]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
215ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 564ms |

| 0 / 0 |
