![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
Привет всем!
Как посчитать "побитое или" двух целых чисел?... Каков результат этой оперции? Заранее благодарен ![]() --------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Переведи в двоичную, а дальше:
1 | 1 = 1 1 | 0 = 1 0 | 0 = 0 |
|||
|
||||
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
Вот так и будет:
Это сообщение отредактировал(а) nikitao - 7.12.2005, 23:27 -------------------- Жизнь - печальная штука. |
|||
|
||||
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
тогда z равно 20 (10100) ? если правильно всё понял...
--------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
nikitao |
|
|||
![]() Кот-программист ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1206 Регистрация: 30.8.2005 Где: Спб Репутация: 1 Всего: 26 |
DESert,При компеляции выдало 21.Ты ошибся в последнем бите
-------------------- Жизнь - печальная штука. |
|||
|
||||
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
да, устный счет подвёл, машина оказалась сильней
![]() --------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
DESert, не забывай, что проверить это можно в обычном виндовозном калькуляторе...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
а как можно представить число типа double в двоичное представление?
--------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
DESert |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 6.12.2005 Где: Москва Репутация: нет Всего: 1 |
спасибо
![]() --------------------
Трудись, и будешь счастлив ты! |
|||
|
||||
Fighter |
|
||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 810 Регистрация: 5.1.2005 Репутация: нет Всего: 2 |
А как работать с побитовыми операциями, например, как это широко практикуется в MFC.
Например в каком нибудь *.h файле объявлены константы
Потом в какой-нибудь функции мы пишем
И у нас создается "видимое плоское окошко". Как самому писать такие фени (ну пусть что-нить попроще будет для начала). Например, чтобы я написал что-то вроде
Вроде я правильно все написал (если не правильно то пожалуйста поправльте). И затем мне нужно проверять, установил ли я значения PARAM1 и PARAM2 или нет. |
||||||
|
|||||||
cardinal |
|
||||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
А если ты их не установишь, то ничего компилироваться не будет...
Широко, т.к. то что ты объявляешь с помощью #define это константы, а их название запомнить проще, чем какие-то там цифры.
Ну так правильно ты все написал. В чем проблема то? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||||
|
|||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Например для функции
Работает это так.. ты задаешь вместо своей переменной int params PARAM1 | PARAM2 т.е. получается 00000001 PARAM1 | 00000010 PARAM2 ------------- 00000011 params а в функции уже проверяешь если последний бит установлен в единицу значит PARAM1 задан...примерно так 00000011 params & 00000001 PARAM1 ------------- 00000001 result |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
передаю PARAM1 проверяю: params & PARAM1 ==1
передаю PARAM2 проверяю: params & PARAM2 ==2 передаю PARAM2 проверяю: params & PARAM1 ==0 передаю PARAM1 проверяю: params & PARAM2 ==0 все верно передаю PARAM2 проверяю: params & PARAM3 ==2 передаю PARAM3 проверяю: params & PARAM2 ==2 что-за? как сделать больше двух параметров
Это сообщение отредактировал(а) apook - 1.10.2007, 08:17 -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
||||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
|
|||
|
||||
zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
Как правильно сказал dumb, все дело в волшебных пузырьках - степенях двойки ![]() Посмотрим, как записываются числа - степени двойки в двоичной системе: 2^x | x(dec) | x(bin) | ------------------------------- 2^0 | 1 |1 | 2^1 | 2 |10 | 2^2 | 4 |100 | 2^3 | 8 |1000 | 2^4 | 16 |10000 | ... вообщем видна закономерность? ![]() те с помощью числа 2^0 можно манипулировать младшим битом в числе (обычно - самый правый бит), 2^1 - вторым справа и так далее с помощью логических операций. Для установки бита пользуемся оператором | Смотрим таблицу: еще надо было добавить строку: 0 | 1 = 1 берем любое число A, и применяем к нему операцию: A |= 1; в итоге все биты числа A останутся без изменений, кроме правого, который установится в 1, независимо от того, был установлен в нем бит или нет ранее. Почему так - понятно по таблице выше. Для сброса бита используем оператор & Таблица: 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 применяем операцию: A &= 1111..10; - колличество разрядов соответствующее числу A, или другими словами: A &= ~1; или A ^= 1; Для проверки бита: (A & 1) != 0; Примерчик:
Это сообщение отредактировал(а) zkv - 1.10.2007, 18:46 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |