Первые шаги в программировании: основы, Си, Objective-c
1.13
Как хранится и записывается информация. Биты и байты
Когда мы с вами рассматривали системы счисления то уже вкратце коснулись вопроса хранения информации на компьютере.
В частности мы узнали, что минимальная единица информация - один байт, а вот для кодирования каждого байта используется один бит.
В одном байте - 8 бит
В одном бите может быть записан либо 0 либо 1
А сколько же байт находится в килобайте? Или в мегабайте?
- Кэш память - память которая расположена на самом процессоре -
самая маленькая по объему - порядка нескольких мегабайт, но самая
быстрая. Это Оперативно Запоминающее Устройство - ОЗУ - при выключении напряжения данные стираются
- Оперативная память компьютера - хранятся текущие данные программ - имеет тип ОЗУ
- Магнитные диски - дискеты, жеские диски - постоянное запоминающее устройство - ПЗУ
- Оптические диски - CD, DVD...
- Флеш-память - разновидность полупроводниковой технологии электрически перепрограммируемой памяти
- Твердотельные диски - (SSD, solid-state drive) — компьютерное не механическое запоминающее устройство на основе микросхем памяти.
Биты и Байты
Итак разберемся с битами и байтами поподробнее:
- в одном байте 8 бит (восемь двоичных разрядов - в одном разряде (бите) содержится либо 0 либо 1 ).
В двоичном виде полностью записанный 1 байт можно представить так:
1111 1111 ( т.е. мы имеем 8 бит информации - от нулей до единиц)
"Полбайта" полностью записанных единицами, ( если можно так сказать :)
... полбайта в природе не существует... это для примера) в десятичном
виде имеет значение 15 ( 1112 = 1510)
Это означает, что в 4-х двоичных разрядах (битах) можно записать
максимальное число 15, а числовых комбинаций (чередований нулей и
единиц) можно записать 16 (от 0000 до 1111)
Полностью записанный байт (состоящий из восьми единиц - 1111 1111) - имеет значение 255 в десятичной система счисления.
Он имеет 256 числовых комбинаций (от всех нулей до всех единиц)
Таким образом в один байт можно записать максимальное число 255 (для целых беззнаковых чисел - от 0...)
Справка
Если вы знакомы с графическими программами и, в
частности, с настройками цветов, то вы наверняка обращали внимание на
варианты записи цвета.
Например цвета палитры R, G, B (красный, зеленый, синий) - имеют диапазон значений от 0 до 255
Это как раз и есть двоичная запись.
В шестнадцатеричной системе счисления "полбайта" имеют запись в виде "F".
Соответственно "FF" - это целый байт имеющий значение 255 в десятичной системе счисления - FF16 = 1510
Шестнадцатеричная система счисления более компактная, нежели двоичная и
более легко читаема, по этой причине она чаще применяется в
программировании.
Вы ее также могли встречать для записи параметров цвета в тех же графических программах (для значений RGB)
Вопрос: сколько же байт отводится под хранение целого числа?
Чем больше байт отводится под хранение, тем большим диапазоном чисел можно пользоваться.
В 1 байте - максимум 255 - но это только для беззнаковых чисел (от 0 и выше) 2 байта - это максимум 65536
Под хранение целого числа ( тип int - от intager) отводится 4 байта - это миллиарды в значении числа
Однако может потребоваться хранение чисел со знаком - для хранения отрицательных чисел.
Как хранятся отрицательные числа?
Для хранения числа со знаком необходимо выделить один из разрядов (1
бит) для того, чтобы указать - является это число отрицательным или нет.
Для этих целей выделяется старший бит (самый левый) 0 - это показатель положительного числа 1 - показатель отрицательного числа
В этом случае мы сразу теряем в диапазоне чисел, которые мы можем хранить в одном байте.
Получается, что 1 байт выделенный для хранения знакового целого числа может содержит диапазон от -128 до +127
На первый взгляд этот диапазон не симметричный - это происходит от того, что счет ведется от 0, а не от 1
Следовательно запись в двоичном виде числа 01111 - будет соответствовать 15 в десятичной системе
В этой записи 0 - это указатель на знак числа