|
Житель Земли
|
|
Логическая математика28.08.2019, 12:13. Показов 2471. Ответов 44
Метки нет (Все метки)
Добрый день. Я не до конца понимаю двоичную с/с, логическую математику, операторы or, xor и т.п. Вот хоть стреляйте, не врубаюсь...
Итак, то что любое число можно представить суммой степеней двойки - это понятно. Например, есть число 6 = 2 + 4 = 21 + 22, но 20 не входит, естественно. Конечная задача такова: функция, проверяющая "вхождение" одного числа в другое, по принципу флагов. то есть 1 входит в 6 = ложь2 входит в 6 = истина4 входит в 6 = истинаи т.п. Добавлено через 1 минуту так, чтобы простыми словами Добавлено через 4 минуты тему, наверное, неправильно назвал....
0
|
|
| 28.08.2019, 12:13 | |
|
Ответы с готовыми решениями:
44
Логическая операция AND Логическая ошибка в цикле. Логическая функция order(r) |
|
|
||
| 29.08.2019, 01:11 | ||
|
Не по теме:
но как ни крути.... не осилив си, не будет понимания ни в каком языке вообще разбираться на изком уровне логики P.S. Сам инженер электроники.. так что "запомнить бит на трназисторах" это уж на молекулярном уровне известно как)))) а начиналось.... PHP/ Delphi/Pascal/C/ASM все в общем наоборот как надо бы по феншую)))))) и дошло до работы в космическом центре оО а DenNik'у.. мы примерно в одно время чет решали нубское на этом форуме)) я это помню)) напиши себе процедуру вывода битов числа, это первое требование(Нет не скопируй где-то, а напиши сам!!!), затем заведи кучу переменных, именно перемнных, разных типов, но целочисленных.. и поиграйся выводя значения в двоичном виде... затем применяй всякие операции и наблюдай за результатом - тоже в двоичном виде... а профессиональные советы тут какие? много умных слов... делай все сам и делай опыт на практике - поймешь все и даже потребуешь от себя больше.. словами не передать те эффекты.. над которыми трудишься и не один год... еще потребуется слово/словосочетание "битовая маска" грызи гранит навуки, он некоторыми местами тонкий, но это айсберг - аккуратнее будь, грозит засесть глубоко)))))))
0
|
||
|
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
|||
| 29.08.2019, 01:38 | |||
![]()
0
|
|||
| 29.08.2019, 02:35 | ||
|
Не по теме:
Ну в обычных процессорах самые мелкие регистры (точнее их младшие части) от 8 бит. И обычно используют уже на 16 и даже чаще 32, не смотря что избыточно)) Множества кстати занимают переменное количество бит, с градацией по 8. Так что небольшое количество флагов может занимать всего байт. =) А вот как вы передадите в функцию параметр размером 1 бит мне вот любопытно?)))
0
|
||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
|
|
| 29.08.2019, 08:53 | |
|
Насколько знаю, перечисления и представляются в виде отдельных битов в 32 битной переменной соответствующего типа и конструкция a := a + [f1]; устанавливает соответствующий бит/флаг и a := a - [f1]; сбрасывает бит/флаг.
0
|
|
|
Житель Земли
|
|||
| 29.08.2019, 09:42 [ТС] | |||
![]() мне нужно: набор свойств 1 - свойство 1 2 - свойство 2 4 - свойство 3 8 - свойство 4 объект поле "свойства": integer программа в зависимости от значения поля "свойства" определяет, какими свойствами обладает объект все это хозяйство в десятичном формате. более простого метода решения задачи имено такого типа я не вижу. в принципе, я ее решил Добавлено через 2 минуты забегая вперед, упрежу. это не RTTI и даже не похоже. все эти свойства задаются не во время дизайна, а уже в готовой программе и меют исключительно описательный характер
0
|
|||
|
|
||||
| 29.08.2019, 13:16 | ||||
|
Не по теме:
![]() ![]() Это я написал лишь все для того, чтобы посмотреть на этот мир с уровня битиков ип онять что и ка кработет. так как автор сей темы написал в самом первом сообщении, что не понимает логические операции... само просто их было понять это выводить битики и производить различные логические вычисления, тут и появилась битовая маска, без нее никуда при решении задачи такого характера. наглядности ради пусть имеется "регистр" настроек и он 8 бит и описывает пусть например такие состояния из жизни: 0 мужчина/женщина 1 умный 2 красивый 3 с навыками программирования 4 с навыками готовки пищи 5 ездит на велосипеде 6 плавает 7 зарезервированно prop := 0000 0000 // исходное состояние пусть это дядька просто программист который плавать в бассейн ездит на велосипеде prop := 0110 1000 после хорошенького отдыха, он на работе забабацал некий крутой алгоритм и когда к нему пришел шеф, он добавил - "какой же ты умный у нас" prop := prop or 0000 0010 // 0110 1010 но тут на радотсях.. помчался он домой и.... переломал ноги и руки prop := prop and not (0110 0000) // 0000 1010 а по четным дням он бывал красив, когда приходил на работу побритым, но на след день когда отростала борода, становился он ну не очень красивым эта операция обновляла его состояние каждый день prop := prop xor 0000 0100
0
|
||||
|
|
||||||||||||||||||
| 29.08.2019, 15:48 | ||||||||||||||||||
|
Оно в виде типа данных переменного размера - точнее в зависимости от количества/значения флагов. Минимум 1 байт (8 бит), максимум 32 байта (256 бит). TForm.TAnchors - имеет всего 4 флага, и поэтому оно занимает всего 1 байт.TAnchorKind так же занимает 1 байт.
1
|
||||||||||||||||||
|
Житель Земли
|
||
| 29.08.2019, 16:03 [ТС] | ||
|
хотя и в моем варианте в Int64 можно засунуть максимальное число 263, то есть, набор из 64 флагов. но опять же, все в конечном итоге зависит от поставленной задачи. можно и set применить, определив заранее 1000 элементов и меняя/добавляя им текстовое описание Добавлено через 4 минуты только тут проблемка. set хранить сложновато
0
|
||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
|
||||||
| 29.08.2019, 16:50 | ||||||
|
Наборы хороши. Но есть у них недостаток. Нельзя в двух наборах использовать одинаковые идентификаторы.
0
|
||||||
|
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
|
||
| 29.08.2019, 17:05 | ||
|
0
|
||
|
|
|
| 29.08.2019, 17:27 | |
|
ну так делай)))) будет положения бит/битов в значении, а не значение на определенном разряде..
с сетом будет тоже самое )))) 0-255 значений и вот вам весь диапазон.. и приплыли, если будет настроек больше)))))) ладно, ушел я отсюда
0
|
|
|
|
||||
| 29.08.2019, 21:30 | ||||
|
Проблему (на этапе компиляции) создаёт то, что может потребоваться преобразование типа и оно нужно "конкретного размера", а у Set при добавлении флагов размер может меняться. И придётся вручную менять все изначальные Byte(..) сначала на Word(..), потом на Cardinal(..), итд... Некоторые возможно даже не получится...Может Run-Time? Нужно задавать Run-Time что именно? Укажете если Integer - и чего? У вас тогда строго 32 флага. Сделайте Set с 32-мя флагами, будет тож самое, только удобненько. Редко кто больше 25 потребляет. Если впрямь аж до тысяч, то может уже фигачить дин-массив из Boolean? Текстовое описание? Стринг-лист с 32 строчками (ну или в количество массива) не пойдёт? Добавлено через 2 минуты ...и для мсье, знающих толк: существует класс такой - TBits.....
0
|
||||
|
пофигист широкого профиля
4770 / 3206 / 862
Регистрация: 15.07.2013
Сообщений: 18,613
|
||
| 30.08.2019, 02:21 | ||
|
В чём у вас сложность? Добавлено через 22 минуты
0
|
||
|
Житель Земли
|
|||
| 30.08.2019, 09:33 [ТС] | |||
|
далее пошли обсуждения дебрей, которые в данном конкретном случае не нужны
0
|
|||
|
Житель Земли
|
|||||||
| 30.08.2019, 10:16 [ТС] | |||||||
0
|
|||||||
|
|
||||||
| 30.08.2019, 13:29 | ||||||
|
Не по теме: Math обычно только тормозит, зачем его дёргать когда вовсе не обязательно? А через Set вот так:
Не по теме: И в отладчике тоже красота! =)
2
|
||||||
|
|
|
| 30.08.2019, 14:37 | |
|
Оно лезет в сопроцессор, а это в любом случае накладные расходы.
Я вот на Rio открыл Power() - там каша из условных компиляций, но в любом случае идёт какая-то жуть))Почему бы просто не увеличивать в цикле? Границы-то должны быть известны? Некий "максимум" всегда должен заранее оговариваться/продумываться. В тот же Integer (точнее в Cardinal, он же DWORD) не всунуть больше 32-х флагов, как ни крути... Определить допустимый максимум - и всё. Индекс флага, набор флагов. Текстовые представления так и так отдельно, в любом массиве/листе.
1
|
|
| 30.08.2019, 14:37 | |
|
Дискретная математика - ложная наука. Математика должна быть радикально изменена
Логическая логическая Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|
|
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
|
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701
Купил два термопринтера QR701.
На сэлф-тесте написано:
Language: PC936 (GB18030).
Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
|
Создание формы заимствованного документа
Maks 03.08.2026
Задача:
Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также
табличная часть со следующими реквизитами:
- Расчетный счет покупателя. . .
|
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача:
В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
|