|
Битовые значения
|
|||
---|---|---|---|
#18+
Добрый день. Есть поле, тип smallint, назовем его NoPay, в таблице Family В этом поле хранится десятичное число. На самом деле это побитное значение из 8 бит: 0 или 1. Последовательность - 7654 3210 1. Возможно ли запросом выбрать все записи у которых бит1 установлено 1, т.е. установлен некий признак. 2. Возможно ли запросом выбрать все записи у которых бит2 установлено 1, т.е. установлен некий признак. 3. Возможно ли запросом выбрать все записи у которых бит3 установлено 1, т.е. установлен некий признак. Если возможно, покажите пожалуйста на конкретном примере: select NoPay from Family where .... -------------------------- Firebird 3.0.1.32609; IBExpert 2017.3.12.1; Windows 10 32-bit; 4Gb RAM; SSD 512Mb + HDD 1 Tb; Настройки по умолчанию Среда разработки: Delphi XE2 + FIBPlus 7.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:10 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Я нашел ее и читал. Но не понял как :( Помогите примером пожалуйста ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:25 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushНа самом деле это побитное значение из 8 бит: 0 или 1. Последовательность - 7654 3210 это что, битовые значения? Что значит "последовательность"? это что, номера битов? тогда 2^7 + 2^6 + 2^5 и т.д. https://ru.wikipedia.org/wiki/Двоичная_система_счисления ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 18:58 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Привет. akrushЕсли возможно, покажите пожалуйста на конкретном примере: select NoPay from Family where .... Код: sql 1. 2. 3. 4. 5.
С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 20:12 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Polesov, спасибо, попробую. еще вопрос: предположим у меня в битах 4-7 хранится некоторое количество, например 6 (это 0111). а как этой функцией проверить это число? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 23:07 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush в битах 4-7 хранится некоторое количество, например 6 (это 0111) 0111 - это 7. Потому что биты идут справа налево. Но даже если бы они шли слева направо, то это было бы 14. И в 4-7 битах никак не может храниться ни 7, ни 6. Потому что 4 бит - 2^4 = 16 5 бит - 2^5 = 32 6 бит - 2^6 = 64 7 бит - 2^7 = 128 p.s. я считаю, что только в 2018 году такое возможно услышать от программиста. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2018, 23:29 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
kdvИ в 4-7 битах никак не может храниться ни 7, ни 6. Может, конечно. В 4-х битах может храниться любое число, которое влезает в 4 бита :) Это вопрос представления информации в данном конкретном случае. Может, он там в 8 битах четыре двухбитовых числа хранит. Или два трехбитовых. Или еще как. Не возбраняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 07:27 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushеще вопрос: предположим у меня в битах 4-7 хранится некоторое количество, например 6 (это 0111). а как этой функцией проверить это число? bit_shr(NoPay, 4) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 07:36 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Привет. akrushеще вопрос: предположим у меня в битах 4-7 хранится некоторое количество, например 6 (это 0111). а как этой функцией проверить это число? Исходим из того, что биты нумеруются справа налево начиная с нуля. Если значение имеет тип SMALLINT - 16 бит, INTEGER - 32 бита. Для SMALLINT нас интересуют биты, помеченные 1: Код: sql 1.
Как узнать, что в указанных битах содержится число 6? Надо сдвинуть битовое значение вправо на 4, выделить по маске 4 бита и сравнить: Код: sql 1.
P.S. вообще-то 6 = 0110b :-) С уважением, Polesov. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 10:45 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
kdvp.s. я считаю, что только в 2018 году такое возможно услышать от программиста. Мне ещё дико интересен характер этой битовой информации. Есть одно подозрение. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2018, 14:44 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Polesov, так и будем решать за студоту домашку? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:15 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Старый плюшевый мишкаМне ещё дико интересен характер этой битовой информации.Есть разница? Автор не понимает, как работает битовая маска, а все туда же экономить на спичках. Автор, сколько миллиардов записей надо окучить, чтобы стала заметна экономия диска на этих самых битах? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:18 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, Увы биты достаются по наследству при конвертации Клариона в Огнептица. В таблицах куча полей с побитной "шифровкой". Вот и приходится изгаляться чтобы расписать их на разные столбцы. Всегда это делал перебором каждой строки + Делфи. Задался вопросом, а можно ли сразу запросом. Принципиально ответ уже получил - МОЖНО. Как я понял можно даже сразу update написать который махом все пропишет. Теперь буду "курить бамбук" и "грызть гранит науки", чтобы понять как эти битовые маски работают. Спасибо за примеры. Увы вопросы будут еще появляться и я буду их задавать ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:43 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devPolesov, так и будем решать за студоту домашку? :) Неужели вы думаете, что если человеку что-то непонятно, - это студент которому лень в чем-то разбираться? Да мне тяжело давались и даются разные системы счисления. Но это не повод вешать клеймо "студота" и "домашка" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 09:45 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush> В таблицах куча полей с побитной "шифровкой". akrush> Вот и приходится изгаляться чтобы расписать их на разные столбцы. А, так это ты из гамна кофетку пытаешься сделать. Это дело бравое, Бог в помощь. Только не забудь потом оттестировать, чтобы не получилось, что перевёл рабочий (хоть и ужасный) гомнокод (БД) в красивый, но неправильный. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 10:07 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Я проверяю. У меня есть контрольный список строк ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 10:48 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамakrush> В таблицах куча полей с побитной "шифровкой". akrush> Вот и приходится изгаляться чтобы расписать их на разные столбцы. А, так это ты из гамна кофетку пытаешься сделать. Это дело бравое, Бог в помощь. Только не забудь потом оттестировать, чтобы не получилось, что перевёл рабочий (хоть и ужасный) гомнокод (БД) в красивый, но неправильный. В файл-серверных базах, видимо, обычное поведение. Экономили на размере самой базы, а индексы и так фигово работали (работают). Правильно делает, что схему данных меняет. Зачёт! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 11:35 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrush, если я не прав, приношу извинения! :) С системами счисления всё элементарно! В десятичной системе счисления по основанию 10 имеем следующие разряды числа: Разряд 0 (единицы): N*10 0 Разряд 1 (десятки): N*10 1 Разряд 2 (сотни): N*10 2 Разряд 3 (тысячи): N*10 3 и т.д., где N - значение в разряде от 0 до 9 В двоичной системе счисления по основанию 2 имеем следующие разряды: Разряд 0 (единицы): N*2 0 Разряд 1 (двойки): N*2 1 Разряд 2 (четвёрки): N*2 2 Разряд 3 (восьмёрки): N*2 3 и т.д., где N - значение в разряде 0 или 1 Как видим, двоичная система еще проще и установленные в 1 биты в машинном слове (16 бит) можно сконвертировать в десятичную систему по следующей таблице: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 12:06 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_dev, Да неправда! Если в первом и втором бите стоят единицы, то в десятичной системе это 3 (три). Без побитовых операций никуда! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 12:47 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, что "неправда"? Если, к примеру, в установлены в 1 разряды 0,3,5,10, то это 1+8+32+1024=1065 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:08 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
akrushIvan_Pisarevsky, Увы биты достаются по наследству при конвертации Клариона в Огнептица. В таблицах куча полей с побитной "шифровкой". Вот и приходится изгаляться чтобы расписать их на разные столбцы. Я так и думал. Через это приходится проходить почти всем, кто успел наработать что-то полезное на плоских БД. Советую ещё подумать о том, чтобы организовать нормальную структуру - свести значения в нечисловых столбцах в таблицы-справочники и в столбцах рабочих таблиц использовать ссылки. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 13:36 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_dev, Это правда. Зачем таблица-то? Я просто не понял её назначения. Видимо, просто азы. Которые все знают. Но они неприменимы в современной реальной жизни. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 14:58 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
KreatorXXI, чтобы человеку, совершенно не знакомому с азами бинарной системы счисления, было проще ориентироваться - какой бит машинного слова какому десятичному числу соответствует без использования калькулятора в режиме "Программист". > Но они неприменимы в современной реальной жизни. Почему неприменимы? Что-то в битовой системе счисления принципиально изменилось? Для понимания принципов вполне подойдет. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:06 |
|
Битовые значения
|
|||
---|---|---|---|
#18+
rdb_devкакой бит машинного слова какому десятичному числу соответствуетДля битовой маски бесполезные знания. rdb_devДля понимания принципов вполне подойдет.Человеку нужно кларион отфайрбёрдить, а не общие принципы обкатывать, вроде как. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2018, 15:23 |
|
|
start [/forum/topic.php?fid=40&fpage=34&tid=1561125]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 164ms |
0 / 0 |