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

Битовые операции, n-ый бит - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка "C2065: Out: необъявленный идентификатор" http://www.cyberforum.ru/cpp-beginners/thread400046.html
Вообщем, помогите начинающему. Вот такие ошибки при компиляции: 1>.\language.cpp(709) : error C2065: Out: необъявленный идентификатор 1>.\language.cpp(710) : error C2065: Out: необъявленный идентификатор 1>.\language.cpp(711) : error C2065: Out: необъявленный идентификатор 1>.\language.cpp(712) : error C2065: Out: необъявленный идентификатор 1>.\language.cpp(713) : error C2065: Out:...
C++ довести до ума код .сравнение двух строк и вывод общих символов #include <iostream> using namespace std; void main() { char str; char strl; http://www.cyberforum.ru/cpp-beginners/thread400042.html
C++ Определить в строке наличие "эмоциональных" символов (перевести на C++)
Помогите пожалуйста перевести с Visual Basic на Visual Basic .NET и на С++ Дана фраза. Определить в ней «эмоциональных символов(восклицательный и вопросительных знаков). Текст программы: Private Sub Command1_Click() End End Sub Private Sub Command2_Click()
C++ Найти максимальный элемент массива и его номер
задан массив n элемнтов,найти max элемент массиваи его номер
C++ Как изменить размер окна и убрать ползунок http://www.cyberforum.ru/cpp-beginners/thread400025.html
Можно ли убрать ползунок в окошке, которое появляется при запуске консольного приложения или изменить его размер
C++ Какая разница в инициализации? Есть класс: class CSomeClass { CSomeClass(); private: bool isState1, isState2; }; члены isState1, isState2 можно инициализировать 2-мя способами: подробнее

Показать сообщение отдельно
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
06.12.2011, 12:18     Битовые операции, n-ый бит
Цитата Сообщение от cybergirl Посмотреть сообщение
а если нужно не единицу записать
Так никто и не записывает.
Цитата Сообщение от cybergirl Посмотреть сообщение
Например, узнать 0 или 1 стоит в 3ем бите? сравнить, одинаковые ли значения в 3-ем и 4-ом бите (две единицыили два нуля)?
Привести это выражение к типу bool. Или выполнить битовый сдвиг вправо. Или просто сравнить с нулем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
inline bool isset(unsigned x, unsigned n) {
     return (x & (1 << n)) != 0;
}
 
int main() {
     unsigned int x = 0x9;
     if (isset(x, 0) == isset(x, 3)) {
          // первый и четвертый биты равны
     }
 
     if (isset(x, 0)) {
          // первый бит - единичный
     }
 
     if (!isset(x, 1)) {
          // второй бит - нулевой
     }
 
     // etc
}
Цитата Сообщение от cybergirl Посмотреть сообщение
что конкретно получается в операции "НЕ сдвиг"? вот так "~ (1<<n)" ?
Это не "НЕ сдвиг". Это инверсия после сдвига. Все биты кроме n - единичные.
И снова по той же самой схеме:
~(1 << 0) = ..1110b
~(1 << 1) = ..1101b
~(1 << 2) = ..1011b
~(1 << 3) = ..0111b


Просто сдвиг дает результат: (1 << 0) = 0001b. Операция ~ изменяет значение каждого бита на противоположное.
 
Текущее время: 00:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru