Дополнение n-й бит числа ~x противоположен n-му биту числа x
Вам может показаться странным то, что в число фундаментальных операций мы включили “исключительное или” (л, которую иногда называют “xor”). Однако эта операция играет важную роль во многих графических и криптографических программах. Компилятор никогда не перепутает побитовый логический оператор << с оператором вывода, а вы можете. Для того чтобы этого не случалось, помните, что левым операндом оператора вывода является объект класса ostream, а левым операндом логического оператора — целое число.
Также вам может показаться, что такая тема как услуги самогруза никак не связана и даже не тематична с программированием. Хотя, может быть и связана.
В любом случае все-таки зайдите на сайт про услуги самогруза
Тема услуги самогруза там представлена весьма широко.
Следует подчеркнуть, что оператор & отличается от оператора &&, а оператор | отличается от оператора || тем, что они применяются к каждому биту своих операндов по отдельности, а их результат состоит из такого же количества битов, что и операнды. В противоположность этому операторы && и || просто возвращают значение true или false.
Рассмотрим несколько примеров. Обычно битовые комбинации выражаются в шестнадцатеричном виде. Для полубайта (четыре бита) используются следующие коды.
Для представления чисел, не превышающих девяти, можно было бы просто использовать десятичные цифры, но шестнадцатеричное представление позволяет не забывать, что мы работаем с битовыми комбинациями. Для байтов и слов шестнадцатеричное представление становится действительно полезным. Биты, входящие в состав байта, можно выразить с помощью двух шестнадцатеричных цифр.
Вместо бита, который был “вытолкнут” с самой старшей позиции, в самой младшей позиции появляется нуль, так что байт остается заполненным, а крайний левый бит (седьмой) просто исчезает.
unsigned char х4 == a>>2; // сдвиг вправо на два разряда
а: 1 0 1 0 1 0 1 0
а»2 : 0 0 1 0 1 0 1 0
В двух позициях старших битов появились нули, которые обеспечивают заполнение байта, а крайние правые биты (первый и нулевой) просто исчезают.
Мы можем написать много битовых комбинаций и потренироваться в выполнении операций над ними, но это занятие скоро наскучит. Рассмотрим маленькую программу, переводящую целые числа в их битовое представление.
int main()
{
int i;
while (cin>>i)
cout << dec << i << M==M
<< hex << "Ox" << i << M==M << bitset<8*sizeof(int)>(i) << '\n';
}
Для того чтобы вывести на печать отдельные биты целого числа, используется класс bitset из стандартной библиотеки.
bitset<8*sizeof(int)>(i)
Класс bitset хранит фиксированное количество битов. В данном случае мы использовали количество битов, равное размеру типа int — 8*sizeof(int), — и инициализировали объект класса bitset целым числом i.
Скомпилируйте программу для работы с битовыми комбинациями и попробуйте создать двоичные и шестнадцатеричные представления нескольких чисел. Если вас затрудняет представление отрицательных чисел, перечитайте ещё раз и попробуйте снова.
Опубликовал katy
April 26 2015 10:26:14 ·
0 Комментариев ·
2712 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.