Сегодня разберем основы компьютера, системы счисления, объемы памяти.



Поехали!

Как работает компьютер?



Компьютер, по сути, состоит из трех частей: устройства ввода/вывода, обработчик.

ЧтоТипЗачемПримеры
УстройстваВводаМы совершаем физическое действие и оно сигнализирует компьютеруКлавиатура, мышка, микрофон и так далее
УстройстваВыводаКомпьютер после обработки что то делаетМонитор, принтер, динамики и так далее
Внутренности компьютераОбработчикСамое интересное. Обработчик берет ввод, а сам отдает вывод. Получается сложенная работаПроцессор


Единицы, нолики, опять единицы...



Процессор компьютера понимает только два значения: 1 и 0.

Факт: исторически сложилось, что процессор понимает только 1 и 0. Почему?
- Потому что ток, идущий по проводам либосильный, либо слабый. Взять значение по середине - опасно, так как можно перпцтать. Двоичный сигнал не спутать.


Итак, если сильно упрощать, то 1 - есть ток, 0 - нету: вы познакомились с двоичной системой счисления. Но согласитесь, что писать 100100111 не удобно? Для таких случаев люди придумали хитрый ход: использовать другие цифры и буквы. Получились системы счисления, вот популярные из них:

СистемаОснованиеИспользуемПример числа 255Описание
Двоичная (бинарный код)20 или 111111111Родной язык процессора
Восьмеричная8от 0 до 7 включительно377Используется в linux системах для управления правами
Десятичная10от 0 до 9 включительно255Человеко-понятно
Шестнадцатиричная16от 0 до 9 И от A до FFFКодировка цветов (Must have), физические адреса электронных устройств в машинах


Почему я взял 255? Это хороший вопрос. Ответ не так прост, потому что это связано с объемами данных.

255 или 256?



Немного из школьной программы: как посчитать количество исходов? Есть монетка орёл/решка. Если бросить её один раз, то вариантов ровно 2: или орёл, или решка. Если бросить 2 раза, то 2^2 (два во второй степени) = 4 варианта. Количество вариантов любого события считается по формуле: {число вариантов} в степени {количество мест}.


Итак, память. Как мы поняли ранее, процессор понимает только 1 или 0. Условно, в памяти есть одна "коробка" для записи ровно одного значения: 1 или 0. Поэтому самая малая единица измерения в программировании - бит - она занимает ровно 1 "коробку" и может хранить или 1 или 0. Процессору глубоко наплевать на биты, байты, гигабайты, а человеку - нет. В следствии этого, человек придумал условные абстракции: байты, гигабайты, терабайты.

У нас число вариантов всегда 2 (потому что только 1 или 0), а число мест разное: например у байта 8 мест, потому что он забирает сразу 8 коробочек. Получается 2 в степени 8 = 256 вариантов двоичного кода (1/0) может быть у байта.

Вернемся пока к объемам.

Термометр бьёт 40 градусов цельсия внутри этого поста! Всё жарче и жарче



СокращенноНазваниеСоотношениеВ байтахВ битах
бБит1/8 байта0.125 Б1
ББайт8 бит1 байт8
КБКилобайт1024 Б10248192
МБМегабайт1024 КБ10485768388608
ГБГигабайт1024 МБ~ 1.07 млрд.-
ТБТерабайт1024 ГБ~ 1.1 трлн.-


Почему же 255? Тут в силу вступают два интересных факта из эволюции электронно вычислительных машин (проще сказать компьютер).

Факт: исторически сложилось, что счёт идёт не с 1, как в обычной жизни, а с 0. Почему?

Представьте себе длинный стеллаж с пронумерованными ячейками. Мы договорились, что номер ячейки - это расстояние от самого начала стеллажа.

Чтобы положить вещь в первую ячейку, какое расстояние нужно пройти от начала? Ноль шагов. Значит, её номер - 0. Чтобы дойти до второй, нужен 1 шаг. Её номер - 1. До четвертой - 3 шага, номер 3.

Компьютерная память устроена похоже. Адрес каждого кусочка памяти - это просто его порядковый номер-смещение от самого первого байта. И первый "участок" находится на нулевом расстоянии от начала

Вторая причина - математическая. Как мы выяснили, 1 байт даёт нам 256 комбинаций. Если начинать их перебор с нуля (00000000), то последней комбинацией (11111111) будет 255. Мы просто используем весь доступный диапазон от 0 до 255, не теряя ни одной комбинации, которая ушла бы на бесполезную единицу в начале списка.


Факт: исторически сложилось, что считать в битах становится тяжело, да и единого стандарта не было. Поэтому решили, что надо взять за стандарт 1 байт. Удобно считать: 2^3 (два в третей степени) = 8 бит.


Что такое 1 байт? Это 8 бит. Что такое 8 бит? Это 8 "коробочек". Получается: 2^8 = 256. Считаем с нуля, значит - нам нужно сделать 255 шагов. Вот и вся магия.

Запомните 255 и 256



255 - потому что так говорят программисты, 256 - потому что так проще понять, что речь про 2^8.

А почему именно байт? Причин исторических очень много. Я просто скажу, что это невероятно удобно: можно записать алфавит, буквы, спецсимволы, цвета, удобно делить (получать полубайты, что вообще то является 1 символом HEX).

ЧтоКонкретнееОписание
Оперативная память (RAM)Ячейка памятиМинимальная адресуемая единица; каждая ячейка имеет уникальный адрес и вмещает ровно 1 байт (8 бит)
Жесткие диски и SSDСекторы и файловые системыДанные логически измеряются в байтах; размеры файлов и свободного места ОС показывает в байтах (и производных)
Кодировка текста (историческая)ASCII1 символ = 1 байт (7 значащих бит, восьмой — для контроля четности или расширенного набора)
Кодировка текста (современная)UTF-8Основной стандарт интернета; переменная длина (1–4 байта на символ), но базовый кирпичик — 1 байт
Языки программированияC/C++: char, unsigned charПо стандарту sizeof(char) всегда равен 1 байту (8 бит); минимальная адресуемая единица
Языки программированияJava: byte, Go/Rust: u8, Python: bytes/bytearrayВстроенные 8-битные целочисленные типы и бинарные последовательности для работы с данными
Сетевые протоколыIPv4-адресаАдрес состоит ровно из 4 октетов (байт), например 192.168.1.1
Сетевые протоколыЗаголовки TCP/UDP/IPСлужебные поля пакетов выровнены по байтовым границам; данные упаковываются в байтовые структуры
Сетевые протоколыMAC-адресаАппаратный адрес сетевой карты — это 6 байт (00:1A:2B:3C:4D:5E)
Изображения (растр)RGB24 / RGBAНа каждый цветовой канал пикселя отводится 1 байт (256 градаций); итого 3 или 4 байта на пиксель
Звук (цифровой)16-битный звук (CD-качество)Один звуковой сэмпл занимает 2 байта (16 бит) на канал
Скорость передачи данныхПрограммы и ОССкачивание файлов отображается в байтах/с (КБ/с, МБ/с), в отличие от провайдерских бит/с
Облачные сервисы и хостингТарификацияОбъём хранения и исходящий трафик измеряются и оплачиваются в гигабайтах (ГБ)


Конец!



В этом уроке вы узнали про основные системы счисления, про стандарты индустрии и почему они важны по сегодняшний день.

К главной странице уроков