32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
||||||
1 | ||||||
Не могу разобраться в термине "Битовые операторы"05.09.2014, 22:28. Показов 1063. Ответов 5
Метки нет (Все метки)
Есть к примеру такой код, интересует строка fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY , я почитал про &, там как я понял сравниваются биты, почему в итоге возвращается тру или флолс? почему если в атрибутах находится инфа и папке и при сравнении с 0х00000010 будет false???
0
|
05.09.2014, 22:28 | |
Ответы с готовыми решениями:
5
C6281: Неверный порядок операций: операторы отношений имеют более высокий приоритет, чем битовые операторы Битовые операторы Битовые операторы Битовые операторы Глючат битовые операторы. |
Модератор
13721 / 10918 / 6478
Регистрация: 18.12.2011
Сообщений: 29,147
|
|
05.09.2014, 22:32 | 2 |
ЛЮБОЕ ненулевое значение в логических операциях считается true.
0
|
32 / 30 / 4
Регистрация: 01.02.2014
Сообщений: 878
|
|
05.09.2014, 22:43 [ТС] | 4 |
спасибо, но всёже интересно
а если о файле то тру? тоесть если сравнить атрибуты файла в двоичном виде с 0х00000010 - останется 0х00000000 ? - почему?
0
|
1123 / 794 / 219
Регистрация: 15.08.2010
Сообщений: 2,185
|
|
05.09.2014, 22:51 | 5 |
Сообщение было отмечено mh-coder как решение
Решение
mh-coder, есть у нас байт: 00110011. допустим 3 бит справа хранит какой-нибудь атрибут. Что бы узнать, единица там или ноль, применяем к нему & 00000100. Теперь все остальные биты обязательно нули. И если наш бит тоже был 0, то это соответствует false, если не ноль (хоть один бит в нашем байте единица) - true. Ну и это уже запихиваем в if как нам надо.
2
|
Ушел с форума
|
|||||||||||
05.09.2014, 23:02 | 6 | ||||||||||
Оператор "&" выполняет поразрядное "и": биты левого операнда
накладываются на биты правого так, что "выживают" только единички, установленные и там, и там: Код
01010111 10011001 --------- 00010001 Attrs установлен пятый бит (2^5=32), и 0, если не установлен. Ну а внутри условия if это значение преобразуется в bool: ненулевое в true, нулевое в false. Следовательно, условие
2
|
05.09.2014, 23:02 | |
05.09.2014, 23:02 | |
Помогаю со студенческими работами здесь
6
Отразить/развернуть число используя битовые ( не арифметические ) операторы: in: 1234; out: 4321 Не могу разобраться с загрузкой данных из файлов,и чтоб в дальнейшем с ними мжно было работать как с массивом,не могу разобраться( Задали работу, не могу разобраться. Используется делфи 10, не могу разобраться, как это сделать Битовые поля(не могу найти ошибку) Не могу разобраться разобраться с кодом меню Не могу понять задачу, никак не могу разобраться как код написать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |