
Практическое применение булевой арифметики. Часть вторая - Двоичная система счисления
В прошлой части мы рассмотрели основы булевой арифметики, сегодня мы рассмотрим основы двоичного счисления и как данные хранятся в памяти ПК на примере С++ в Qt.
В любом ПК и микропроцессоре используется двоичная система счисления для кодирования информации.
В двоичной системе счисления существуют только два символа 0 и 1.
Последовательная запись из нулей и единиц позволяет закодировать любую информацию.
Когда мы говорим о системе счисления мы говорим о цифрах.
Давайте рассмотрим таблицу
Как видите кодирование в двоичной системе начинается справа на лево. Новые цифры всегда добавляются справа.
Мы не будем рассматривать арифметические операции в системе счисления, так как нас интересуют исключительно операции с битами.
Из приведённой выше таблицы можно сделать интересные выводы - если в одном бите мы можем хранить только два значения, то в двух уже 4, в трех – 8 и так далее.
Хранение данных в памяти ПК
На любой платформе самой маленькой единицей информации будет 1 бит (bit).
В программировании принято считать, что все данные хранятся в виде байтов.
На ПК 1 байт равен 8 бит, но этот размер зависит от архитектуры и реализации компилятора.
Многие микропроцессоры тоже оперируют 8 битным байтом.
На ПК в оперативной памяти или на носителях, все данные хранятся в виде байтов.
Давайте рассмотрим рисунок:
На рисунке представлена структура байта и количество отдельных значений, которое можно сохранить в одном байте.
Мы можем сохранить 8 значений (0-1) – такие значения отлично подойдут для хранения разнообразных флагов или одного из состояний устройств (включено/выключено, работает/не работает).
Так же мы можем сохранить 4 значения (0-4) здесь можно хранить одно несколько состояний, например, устройство (работает, не работает, предупреждение или ошибка).
Можно хранить два значения (0-15) - одно из 16 состояний устройства.
Далее мы можем хранить значения до (0-31), одно значение (0-3) и одно значение 0-1 или значения до (0-31) и три значения (0-1)
И так далее.
Типы данных С++ и Qt - байт
В С++ существует всего три типа данных, поддерживающих один байт это
char – может хранить значения от -127 до 127 или от 0 до 255
unsigned char – может хранить значения от 0 до 255
signed char – может хранить значения от -127 до 127
В Qt в дополнение к типам C++ существуют
qint8 – этот тип всегда будет 8-битным независимо от физической платформы.
Для битовых операций всегда используйте unsigned char или qint8!
Заключение
Сегодня мы рассмотрели основы двоичной системы счисления и типы данных в C++.
В следующей части мы рассмотрим работу с двоичными данными в C++ и QT5.
Добавить комментарий