Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Побитовое или, побитовые операции 
:(
    Опции темы
DESert
Дата 7.12.2005, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

Репутация: нет
Всего: 1



Привет всем!
Как посчитать "побитое или" двух целых чисел?...
Каков результат этой оперции?
Заранее благодарен smile
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
bel_nikita
Дата 7.12.2005, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



Переведи в двоичную, а дальше:
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
nikitao
Дата 7.12.2005, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Вот так и будет:
Код

int x,y,z;
x=17;
y=20;
z=x|y;//побитовое или x и y


Это сообщение отредактировал(а) nikitao - 7.12.2005, 23:27


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
DESert
Дата 7.12.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

Репутация: нет
Всего: 1



тогда z равно 20 (10100) ? если правильно всё понял...
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
nikitao
Дата 7.12.2005, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



DESert,При компеляции выдало 21.Ты ошибся в последнем бите



--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
DESert
Дата 7.12.2005, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

Репутация: нет
Всего: 1



да, устный счет подвёл, машина оказалась сильней smile
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
cardinal
Дата 7.12.2005, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



DESert, не забывай, что проверить это можно в обычном виндовозном калькуляторе...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
DESert
Дата 8.12.2005, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

Репутация: нет
Всего: 1



а как можно представить число типа double в двоичное представление?
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
cardinal
Дата 8.12.2005, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Точно также как и все остальные...
http://forum.vingrad.ru/index.php?act=Sear...%EB%E5%ED%E8%FF


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
DESert
Дата 8.12.2005, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 6.12.2005
Где: Москва

Репутация: нет
Всего: 1



спасибо smile
--------------------
Трудись, и будешь счастлив ты!
PM MAIL ICQ   Вверх
Fighter
Дата 12.12.2005, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 810
Регистрация: 5.1.2005

Репутация: нет
Всего: 2



А как работать с побитовыми операциями, например, как это широко практикуется в MFC.
Например в каком нибудь *.h файле объявлены константы

Код

#define WS_VISIBLE 0x0001
#define WS_FLAT      0x0002
...


Потом в какой-нибудь функции мы пишем

Код

  CreateWindow(...., WS_VISIBLE | WS_FLAT, ...)


И у нас создается "видимое плоское окошко".
Как самому писать такие фени (ну пусть что-нить попроще будет для начала).
Например, чтобы я написал что-то вроде

Код

  #define PARAM1 0x0001
  #define PARAM2 0x0002

...
  int a;
  a = PARAM1 | PARAM2;


Вроде я правильно все написал (если не правильно то пожалуйста поправльте). И затем мне нужно проверять, установил ли я значения PARAM1 и PARAM2 или нет.
PM MAIL   Вверх
cardinal
Дата 12.12.2005, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(Fighter @ 11.12.2005, 22:05)
И затем мне нужно проверять, установил ли я значения PARAM1 и PARAM2 или нет.

А если ты их не установишь, то ничего компилироваться не будет...
Цитата(Fighter @ 11.12.2005, 22:05)
например, как это широко практикуется в MFC.

Широко, т.к. то что ты объявляешь с помощью #define это константы, а их название запомнить проще, чем какие-то там цифры.
Цитата(Fighter @ 11.12.2005, 22:05)
Как самому писать такие фени (ну пусть что-нить попроще будет для начала).
Например, чтобы я написал что-то вроде

Ну так правильно ты все написал. В чем проблема то?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
azesmcar
Дата 12.12.2005, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Например для функции
Код

#define PARAM1 0x0001
#define PARAM2 0x0002

int func(int params)
{
   if ( (params & PARAM1) != 0 )
   {
       //флаг PARAM1 задан
   }
   if ( (params & PARAM2) != 0 )
   {
       //флаг PARAM2 задан
   }
}

Работает это так..
ты задаешь вместо своей переменной int params PARAM1 | PARAM2 т.е. получается
00000001 PARAM1
|
00000010 PARAM2
-------------
00000011 params
а в функции уже проверяешь если последний бит установлен в единицу значит PARAM1 задан...примерно так
00000011 params
&
00000001 PARAM1
-------------
00000001 result

PM   Вверх
apook
Дата 1.10.2007, 08:15 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
что-за? как сделать больше двух параметров

Код

#define PARAM1 0x0001
#define PARAM2 0x0002
#define PARAM3 0x0003 //?




Это сообщение отредактировал(а) apook - 1.10.2007, 08:17


--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
dumb
Дата 1.10.2007, 08:34 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Цитата(apook @  1.10.2007,  09:15 Найти цитируемый пост)
что-за? как сделать больше двух параметров
константы должны быть степенями двойки: 1,2,4,8,...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0838 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.