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

Как инвертировать первый бит у int? - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.89
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.10.2012, 17:54     Как инвертировать первый бит у int? #1
Что-то я совсем плохо соображаю. Напомните, пожалуйста, как инвертировать первый бит у int? Что бы если б там был ноль, то стал 1 и наоборот. При этом остальные биты чтоб не затрагивал. Система может быть как 16, так 32, так и 64 битной
Прила в голову идея, что первый бит отвечает за четность числа... Но хотелось бы оформить это покрасивее что ли
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
22.10.2012, 19:50     Как инвертировать первый бит у int? #21
Thinker, очепятался с этими тэгами, знаю. Уже поправить успел.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
22.10.2012, 19:54     Как инвертировать первый бит у int? #22
Вы сами себе противоречите. Инвертируется только один бит, на i позиции. Какие еще 0 будут инвертированы? По Вашему 0^0 = 1?
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.10.2012, 19:54  [ТС]     Как инвертировать первый бит у int? #23
Kgfq, побитовое исключающее или. С восьмеркой все то же самое:
исходное число = 8(1000) после инвертирования третьего бита (x ^= 1 << 2) получается 12 или 1100. Что здесь непонятного?
Thinker
22.10.2012, 19:55
  #24

Не по теме:

Kgfq, судя по вашим постам, вроде человек с головой, вы чего так путаете с операцией ^? вроде определение знаете, не понятно почему вас так заклинило. вздохните поглубже и теоретически докажите утверждение, что инвертироваться только один бит будет

Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
22.10.2012, 19:57     Как инвертировать первый бит у int? #25
Thinker,

int a, b, c;
c = a ^ b;

Разве a ^ b не проделает операцию исключающего или над всеми битами чисел а и b?
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
22.10.2012, 19:59     Как инвертировать первый бит у int? #26
Цитата Сообщение от Kgfq Посмотреть сообщение
int a, b, c;
c = a ^ b;
Разве a ^ b не проделает операцию исключающего или над всеми битами чисел а и b?
да, все биты. только ничего, что в числе 1 << i все биты, кроме i-го, равны 0?
при этом
x ^ 0 = x
о чем это вам говорит. о том, что все биты, кроме i-го, останутся прежними
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
22.10.2012, 20:00     Как инвертировать первый бит у int? #27
Kgfq, сделает операцию, и инвертирует значение совершенно разные вещи. В записи 1 << i будет только одна единица в битовом представлении.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2012, 20:07     Как инвертировать первый бит у int?
Еще ссылки по теме:

C++ Закодировать файл. Взять 7 байт. Первый бит каждого байта переместить в 8 байт
C++ Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
52 бит не влазит в long int C++

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

Или воспользуйтесь поиском по форуму:
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
22.10.2012, 20:07     Как инвертировать первый бит у int? #28
Thinker, кхм, меня заело на: 0^0 = 1...

Добавлено через 4 минуты

Не по теме:

Не сразу дошло, вообщем, что если у одного числа 0, то у другого останется то, что есть.

Yandex
Объявления
22.10.2012, 20:07     Как инвертировать первый бит у int?
Ответ Создать тему
Опции темы

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