Добавить в корзинуПозвонить
Найти в Дзене
Junior Coder

Бинарные операции в С++.

Наверное все знают, что вся информация в памяти компьютера хранится в виде битов, которые могут принимать только два значения: ноль или единицу(соответственно: ложь и истину). Благодаря архитектуре первых микросхем, биты было удобно объеденить в байты по восемь битов. Возможности компьютеров росли и байты объеденили в, так называемое, слово(word), состоящее из двух байт. Для удобства биты в слове стали обозначать числовыми и строковыми символами: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(Ноль тоже является цифрой). Так появился шестнадцатеричный язык счисления. (Позже появилось двойное слово(dword), затем килобайты, мегабайты и т.д.) Поэтому результат записи в компиляторе с++: cout << 0b1111; cout << 0xF; cout << 15; будет один и тот же - цифра 15. Только в первом случае мы его записали в бинарном виде, во втором в шестнадцатиричном, ну, а в третьем, в привычном нам, десятичном виде. Оператор cout, кстати, служит для вывода на экран, и является объектом библиотеки iostream. Значки << называются

Наверное все знают, что вся информация в памяти компьютера хранится в виде битов, которые могут принимать только два значения: ноль или единицу(соответственно: ложь и истину). Благодаря архитектуре первых микросхем, биты было удобно объеденить в байты по восемь битов. Возможности компьютеров росли и байты объеденили в, так называемое, слово(word), состоящее из двух байт. Для удобства биты в слове стали обозначать числовыми и строковыми символами: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(Ноль тоже является цифрой). Так появился шестнадцатеричный язык счисления. (Позже появилось двойное слово(dword), затем килобайты, мегабайты и т.д.) Поэтому результат записи в компиляторе с++:

cout << 0b1111;

cout << 0xF;

cout << 15;

будет один и тот же - цифра 15. Только в первом случае мы его записали в бинарном виде, во втором в шестнадцатиричном, ну, а в третьем, в привычном нам, десятичном виде. Оператор cout, кстати, служит для вывода на экран, и является объектом библиотеки iostream. Значки << называются перегруженными (или перенаправленными) операторами вывода. Почему перегруженными? Потому, что в системах DOS и UNIX используются операторы переадресации вывода < и ввода >, например, если вы наберете в командной строке (ее можно найти в папке "стандартные" в меню "пуск") команду:

set /? > c:\users\user\desktop\my_help.txt

то на рабочем столе вашего компьютера появится файл с названием "my_help" с подробной информацией о работе команды set. Только не забудьте вместо user вставить ваше имя пользователя. Сишные операторы << и >> работают через буфер обмена, в отличии от DOSовских, которые работают напрямую, поэтому и называются перегруженными. Бинарные операции широко используются в С и С++, особенно удобны операторы смещения << и >>(не путайте их с операторами ввода и вывода, это разные штуки, не смотря на то, что выглядят одинаково), например для быстрого умножения или деления, если набрать:

int i = 5, x, h;

x = i << 1;

h = i << 2;

затем вывести результат:

cout << "i = " << i << endl;

cout << "x = " << x << endl;

cout << "h = " << h << endl;

то мы получим:

i = 5

x = 10

h = 20

то есть мы просто сместили влево единицы в бинарном представлении цифры пять(0b00000101) на одну позицию в случае х(0b00001010) и на две в случае h(0b00010100). Так же бинарные операции используются для сложения и вычитания и при работе со строковыми переменными таблицы ASCII, но об этом поговорим в следующей статье...

#C++ #программирование