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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 56, средняя оценка - 4.66
Jino_
2 / 2 / 1
Регистрация: 26.06.2010
Сообщений: 37
#1

Порязрядные операции в С - C++

03.07.2010, 13:34. Просмотров 7981. Ответов 5
Метки нет (Все метки)

В чем разница между операторами ! и ~?
Как я понимаю, оба оператора преобразуют единичные биты в нулевые и наоборот, но почему
C++
1
printf("%d", !0)
выводит 1, а
C++
1
printf("%d", ~0)
выводит -1?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2010, 13:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Порязрядные операции в С (C++):

Перегрузить операции сравнения комплексных чисел и операции потокового вывода - C++
Создать класс комплексное число. Перегрузить операции сравнения комплексных чисел! =, ==,>, <,> =, <= И операции потокового ввода-вывода. ...

Битовые операции и операции смещения языка С - C++
Доброго времени суток господа,помогите пожалуйста.Есть 2 кода к задаче,первый работает верно(переводит обычные числа в 16-ти ричные),а...

Заменить операции ifstream на операции fprintf - C++
Собственно как и написано в заголовке заменить операции ifstream на fprintf со всеми вытекающими(типо getline) необходимо мне. Помогите...

Записать логические выражения, используя условные операторы, операции отношений и логические операции - C++
Записать логические выражения, используя условные операторы, операции отношений и логические операции алгоритмического языка ...

Операции в С++ - C++
Я не могу понять что делают ети операции >> << &= |= ^= Обясните пожалуйста

Битовые операции - C++
Есть число в двоичной системе, например "01000001", рядом с единицами надо заменить нули на единички! то есть должно получится например...

5
besstiaa
94 / 94 / 7
Регистрация: 04.06.2010
Сообщений: 223
03.07.2010, 14:01 #2
Цитата Сообщение от Jino_ Посмотреть сообщение
Как я понимаю, оба оператора преобразуют единичные биты в нулевые и наоборот, но почему
Нет. Побитовая инверсия это ~. А ! - логическое отрицание.
1
Prividenie
74 / 74 / 6
Регистрация: 05.10.2008
Сообщений: 233
03.07.2010, 14:06 #3
потому что все биты числа - 1. оно и вывело число со знаком - "-1"
0
Jino_
2 / 2 / 1
Регистрация: 26.06.2010
Сообщений: 37
03.07.2010, 14:08  [ТС] #4
Цитата Сообщение от besstiaa Посмотреть сообщение
Нет. Побитовая инверсия это ~. А ! - логическое отрицание.
Точно

C
1
printf("%d", !2)
выводит 0

Цитата Сообщение от Prividenie Посмотреть сообщение
потому что все биты числа - 1. оно и вывело число со знаком - "-1"
да, разобрался уже
0
besstiaa
94 / 94 / 7
Регистрация: 04.06.2010
Сообщений: 223
03.07.2010, 14:13 #5
Угу) и !100000 тоже 0 будет
0
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
03.07.2010, 14:17 #6
~ - битовая операция (инверсия)
! - логическая операция (отрицание)

нужно знать как представлены числа в памяти (дополнительный код, обратный код)

0- 00000000
-0 - 11111111
поэтому ~0=-1

ну а с ! все и так ясно

Добавлено через 42 секунды
на калькуляторе win можно легко проверить
0
03.07.2010, 14:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2010, 14:17
Привет! Вот еще темы с ответами:

Битовые операции - C++
Сдвинуть последовательность битов вправо так, чтобы на нулевой позиции находился первый единичный бит.

Побитовые операции - C++
Задание: Дано целое неотрицательное число. Определить количество составляющих его шестнадцатеричных цифр, содержащих в двоичном...

Операции с указателями в С++ - C++
Используя приведенный ниже код разработать программу, используя в качестве контейнера для хранения данных динамические массивы. Для...

Операции с матрицами - C++
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; struct matrix { const int m=0;n= 0; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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