Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
#1

Глючат битовые операторы. - C++

20.12.2009, 21:13. Просмотров 517. Ответов 3
Метки нет (Все метки)

Когда пользуюсь битовыми операторами, программа выдает хз какие значения:

18|89 = 91 должно быть 89, т. к. объединение - большая часть
18&89 = 16 (18)
18^89 = 75 (72)
~18 = -19 (-18)

Насколько я понял, битовые операторы корректно работают только со значениями bool?

Вот код например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main()
{
    int a=18, b=89, res;
    cout << endl;
    
    res = a | b;
    cout << a << "|" << b << " = " << res << endl;
    res = a&b;
    cout << a << "&" << b << " = " << res << endl;
    res = a^b;
    cout << a << "^" << b << " = " << res << endl;
    res = ~a;
    cout << "~" << a << " = " << res << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2009, 21:13     Глючат битовые операторы.
Посмотрите здесь:

C++ Битовые поля
битовые поля C++
Типы данных. Операции. Операторы. операторы ветвления Visual C++
Битовые операции C++
C++ Битовые поля
Битовые операции C++
C++ Битовые операции
битовые операции C++
C++ Битовые поля
C++ Битовые операторы
C++ Не могу разобраться в термине "Битовые операторы"
Битовые операции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
20.12.2009, 22:02     Глючат битовые операторы. #2
они работают коректно, но не с числами а разрядами

не в обиду, но вам поря поспать:
1011001 побитовое или с
0010010 даст
1011011 - увеличение на 2 здесь 1011011

1011001 побитовое и с
0010010 даст
0010000 = 16 сошлось

1011001 побитовое исключающее или с
0010010 даст
1001011 = анализуруем: отнимает от 89 16 здесь 1001011 и прибавляем 2 здесь: 1001011 и того 89-16+2 = 75 - сошлось

на счет "не" ничего не могу сказать.. к сожалению.. но врядли машина "опять ошиблась"
OVERPOWER8
19 / 19 / 1
Регистрация: 29.11.2009
Сообщений: 224
20.12.2009, 22:12  [ТС]     Глючат битовые операторы. #3
>> outoftime
Спасибо. Я думал, только побитовые ( << и >> ) работают с разрядами. Однако битовые тоже.

Тогда вопрос - будут ли они корректно работать с истинностными (1/0) значениями?
outoftime
║XLR8║
506 / 428 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
20.12.2009, 23:42     Глючат битовые операторы. #4
нет, эти только с числами, для истеностных есть &&, || и кажись все.. а нет, есть еще !
Yandex
Объявления
20.12.2009, 23:42     Глючат битовые операторы.
Ответ Создать тему
Опции темы

Текущее время: 02:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru