Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нубский вопрос(битовые маски) / 13 сообщений из 13, страница 1 из 1
19.12.2014, 14:55
    #38838178
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
A ^ B
A & ~B
Это одно и тоже?
...
Рейтинг: 0 / 0
19.12.2014, 15:22
    #38838223
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Нет
Код: sql
1.
A ^ B = (A & ~B) | (~A & B)
...
Рейтинг: 0 / 0
19.12.2014, 15:39
    #38838247
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Dima T, но применительно к флагам типа

A = 1
B = 2
C = 4
...

оно же тот же результат будет давать?
...
Рейтинг: 0 / 0
19.12.2014, 15:51
    #38838268
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Сам посчитать пробовал что будет?
Код: sql
1.
2.
3.
4.
1 ^ 2 = 3
1 & ~2 = 1
2 ^ 1 = 3
2 & ~1 = 2


Такого типа флаги обычно объединяют через | (побитовое или)
Код: sql
1.
1 | 2 = 3
...
Рейтинг: 0 / 0
19.12.2014, 16:16
    #38838303
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Dima T,

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
A = 1 // 0001
B = 2 // 0010
C = 4 // 0100
D = 8 // 1000
flags = A | C | D

/* 

0001
0100
----
0101

0101
1000
----
1101

*/

console.log(flags.toString(2)); // 1101

// сбрасываем флаг C
console.log((~C).toString(2)); // -101 wtf?

console.log((flags & ~C).toString(2)); // 1001

console.log((flags ^ C).toString(2)); // 1001
...
Рейтинг: 0 / 0
19.12.2014, 16:22
    #38838307
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
user199617,

8 ^ 4 // 12
8 & ~4 // 8

теперь понятно, но работать то все равно будет:

12 & 8 // 8

ну всмысле

if (flags & some_flag) { /* ... */ }
...
Рейтинг: 0 / 0
19.12.2014, 16:28
    #38838315
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Теперь попробуй в своем коде сбросить флаг B :)


Код: sql
1.
console.log((~C).toString(2)); // -101 wtf?


Тут знаковый бит тоже инвертировался, поэтому результат стал отрицательным
...
Рейтинг: 0 / 0
19.12.2014, 16:31
    #38838318
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Dima T, -11
...
Рейтинг: 0 / 0
19.12.2014, 16:35
    #38838327
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
user199617Dima T, -11
Чего -11 ?
Выполни это и посмотри что получится
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
A = 1 // 0001
B = 2 // 0010
C = 4 // 0100
D = 8 // 1000
flags = A | C | D

console.log(flags.toString(2)); // 1101

// сбрасываем флаг B
console.log((flags & ~B).toString(2)); // ????

console.log((flags ^ B).toString(2)); // ????

...
Рейтинг: 0 / 0
19.12.2014, 19:37
    #38838467
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
user199617A ^ B
A & ~B
Это одно и тоже?
Первое - инвертировать флаг, второе - сбросить флаг.
...
Рейтинг: 0 / 0
20.12.2014, 06:55
    #38838608
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Anatoly Moskovsky,

просто такую строчку встретил
w.setWindowFlags(flags & ~Qt::WindowContextHelpButtonHint)

возвращает она тоже самое, что и:
flags ^ Qt::WindowContextHelpButtonHint

битовые операции не часто использую просто.
...
Рейтинг: 0 / 0
20.12.2014, 08:59
    #38838621
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
user199617Anatoly Moskovsky,

просто такую строчку встретил
w.setWindowFlags(flags & ~Qt::WindowContextHelpButtonHint)

возвращает она тоже самое, что и:
flags ^ Qt::WindowContextHelpButtonHint

битовые операции не часто использую просто.
Ты разницу между инверсией и сбросом в ноль понимаешь? Это одно и тоже если нужный бит 1, если он 0, то ^ установит его в 1.
...
Рейтинг: 0 / 0
20.12.2014, 09:25
    #38838625
user199617
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нубский вопрос(битовые маски)
Dima T, если флаг был, то сбросит, если не было установит. Но там флаг установлен, потому все работало. Тот код в QT убирает кнопку "?" у QDialog.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нубский вопрос(битовые маски) / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]