Люди думают образами, а компьютеры... пока не думают, они оперируют нулями и единицами...
*
***
Всем доброго времени!
Сегодня решил остановиться на теме, которая плотно связана с программированием и информатикой - а именно системах счисления*... (тем более, что по тем или иным причинам мне приходиться ее задевать в своих заметках).
* Вообще, что такое система счисления?
Отвечу кратко: это запись чисел по установленным правилам. Например, сейчас принята везде десятичная система счисления, и число "десять" мы записываем в виде "10" (хотя, например, в Риме раньше использовали свою систему, и "десять" бы выглядело как "X").
*
Собственно, при желании, каждый может придумать свою систему и закодировать ей данные (правда, если в этом смысл? 🙂). Как бы там ни было, ниже я затрону только самые распространенные системы на сегодняшний день...
*
Содержание статьи📎
Основное о системах счисления
Азы: начало
Почему статью я начал с того, что компьютер не "умеет думать"? Ведь он вроде выполняет кучу работы, может многое делать автоматически...
Дело в том, что ПК (телефон, планшет и т.д.) — это "железка", набор электронных схем, объединенных в одну цепь. За обработку информации среди всех железок, как многие знают, отвечает процессор (внутри которого есть много транзисторов. Это полупроводниковые элементы, способные либо "пропускать" через себя ток, либо нет).
Так вот, именно поэтому компьютер "понимает" только два сигнала: либо ток есть ("1"), либо тока нет ("0"). Отсюда и пошла двоичная система счисления. В ней любое число представляет из себя последовательность "единичек" и "нулей". 👇
Кстати, иногда двоичную систему счисления называют "машинным языком" (ведь именно на нем разговаривают ПК). См. табличку ниже: думаю, будет понятно, как хранятся данные на носителях... 👇
Ток | "1" | "0" |
Участок поверхности магнитного диска (HDD, например) | Намагничен | Размагничен |
Участок поверхности компакт-диска | Отражает луч | Не отражает луч |
*
Десятичная (DEC)
С ней вроде бы всё просто... 🙂
Повсюду, куда бы мы не пошли, нас окружают наборы цифр от 0 до 9 — те же ценники в магазинах, примеры на уроках в школе и т.д. Собственно, это всё и есть десятичная система счисления. Думаю, с ней итак многие знакомы!
Справочные данные (которые иногда нужны):
- обозначение на латинице - DEC;
- используемые цифры для обозначения чисел: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;
- однозначные числа (примеры): 1, 5, 6; двузначные числа: 18, 78, 98; трёхзначные числа: 128, 388; и т.д.
- двузначные, трёхзначные и т.д. числа называют многозначными;
- более подробно см. на Википедии.
*
Двоичная (BIN)
Определение
Двоичная система счисления — позиционная система счисления с основанием 2. Используется практически во всех современных компьютерах и прочих вычислительных электронных устройствах. Подробнее
*
Как уже привел выше, компьютер понимает только два "сигнала" - либо ток есть условно "1" - логическая единица), либо его нет (условно "0" - логический ноль).
Отсюда и название - двоичная система счисления. В ней все числа записываются только двумя цифрами "0" и "1".
***
Например:
"1" (десятичн.) = "0001" (двоичн.). Важно: первые три нуля не явл. значащими, и их можно отбросить, т.е. писать число без них! Но чтобы не путаться, я рекомендовал бы этого не делать.
"2" (десятичн.) = "0010" (двоичн.). Важно: в этом случае первые два нуля не явл. значащими и их можно отбросить (последний нуль отбрасывать нельзя!!!).
"3" (десятичн.) = "0011" (двоичн.). -//-
***
Чтобы не перепутать числа, записанные в десятичной и двоичной системе счисления - к последним прибавляют нижний индекс, например: 1012. Либо к числу дописывают индекс-префикс 0b или &, например 0b101 или &101. Также иногда встречается аббревиатура "BIN", а напротив нее число, скажем, "0001".
Кстати, как и в десятичной, числа в двоичной системе можно складывать, вычитать, умножать и пр. (пару примеров привел ниже, но обычно вручную это никто не делает, и особого смысла вникать в это - лично я не вижу).
Для перевода двоичного числа в десятичное - есть простой наглядный пример (см. скрин ниже, начиная с первой цифры числа - все цифры умножаются на "2" в степени, которая равна кол-ву других цифр перед ней). 👇 Опять же, все это сейчас можно сделать с помощью спец. калькуляторов и программ (зачем вручную?).
*
Причем тут Биты и Байты
Бит — это двоичное число, наименьшая единица информации. Может принимать значение либо "1", либо "0" (т.е. либо есть электрический сигнал, либо нет. Чуть выше рассказал, что это за единички и нули).
Разумеется, чтобы закодировать один символ — одного Бита будет явно недостаточно! А вот 8 Бит — вполне достаточно для передачи одного символа, например, цифры "5" или буквы "A" (кстати, строка из 8 Бит - получила название Байт).
См. скрин ниже, показал как в нем отображается обычные символы, которые мы вводим с клавиатуры. Например, "A" компьютер понимает как "0100 0001", а цифру "1" как "0011 0001". 👇
*
Единицы измерения информации
Сегодня в компьютерном мире чаще всего объем данных можно услышать/увидеть в Мегабайтах и Гигабайтах. Например, на торрент-трекерах часто представлены видеофайлы размером в 1,37 Гб (см. ниже небольшую табличку ниже 👇).
Сокр. обозначение | Размер | Размер в Байтах | |
1 Байт | Байт, Byte | 8 Бит (Bit) | 1 (или 20) |
1 Килобайт | Кбайт, Kb, Кб | 1 024 Байт | 210 |
1 Мегабайт | Мбайт, Mb, Мб | 1 048 576 Байт или 1024 Кб | 220 |
1 Гигабайт | Гбайт, Gb, Гб | 1024 Мб | 230 |
1 Терабайт | Тбайт, Tb, Тб | 1024 Гб | 240 |
Обратите внимание, что 1 Кб = 1024 Байт (а не 1000 как во многих других случаях!). Почему так? Дело как раз в двоичной системе счисления (которую и понимает ПК), а она кратна 2 (8, 16, 32, 64, 128, 256, 512, 1024).
Когда в 60-х годах прошлого века начали расти массивы данных и понадобилось как-то "сократить большие длинные числа" — то решили использовать привычную международную систему СИ: "Кило", "Мега" и т.д. (ну а она ближе всего к 1024...). Вот так и пошло...
(забавный момент: производители дисков "считают" почему-то объем в десятичной системе и у них 1 Кб = 1000 Байт. Поэтому при покупке диска на "1000 Гб" — по факту получаешь "931 Гб", т.к. компьютер считает в двоичной...)
*
📌 Кстати!
Важно отметить 2 вещи:
- скорость подкл. к сети — измеряют в Битах (например, 100 Мбит/с). Почему? Дело в том, что при передаче информации передается не только сам файл, но и другая служебная информация (часть из которой меньше байта). Поэтому логично (да и вообще, исторически так сложилось), что скорость подключения измеряется и указывается в Мбит/с.
- размер файла, емкость диска и пр. — измеряют в Байтах (например, 100 Гб).
*
Восьмеричная (OCT) и шестнадцатеричная (HEX)
Восьмеричная система счисления — позиционная целочисленная система счисления с основанием 8. Использует для обозначения символы 0, 1, 2, 3, 4, 5, 6, 7. Число 8, кстати, имеет еще и символический смысл, является первым кубом двойки и отождествляется с трехмерным измерением.
Шестнадцатеричная система счисления — позиционная система счисления по основанию 16. Использует для обозначения цифры от 0 до 9 и латинские буквы от A до F.
***
👉👉При программировании, чтении комп. документации, работе в HEX-редакторах - наиболее часто сталкиваешься именно с шестнадцатеричной системой счисления. Почему?
Дело в том, что миним. единицей памяти явл. 8-Битный Байт, значение которого удобно записывать двумя шестнадцатеричными цифрами. И поэтому эту систему начали активно использовать еще в прошлом веке... Шестнадц. числа, кстати, не только удобны, но и сокращают запись. Посмотрите, как выглядит число 111555666 в десятичной (DEC), двоичной (BIN) и шестндц. (HEX) системах счисления.
Для того, чтобы не перепутать числа в обычной десятичной системе с шестнадцатеричной, для второй используют спец. обозначения:
- либо префикс "0х" (например, "10" будет выглядеть как: 0хA)
- либо в конце числа ставят букву "h" (например, "10" будет выглядеть как: Ah).
*
Перевод чисел из одной системы в другую
Калькулятор
Чтобы не устанавливать никакие доп. программы - можно воспользоваться самым обычным калькулятором, который есть во всех совр. ОС Windows (найти его можно в меню ПУСК).
Достаточно перевести его в режим "Программиста" (или расширенный/инженерный, зависит от версии Windows) и написать какое-нибудь число - оно автоматически отобразится сразу в 4-х системах счисления... 👇
*
HEX редактор (не едиными цифрами)
Чтобы посмотреть в разных системах счисления не только цифры, но и любые другие символы (+ возможность покопаться в любых файлах) — отлично подходят HEX-редакторы. Для первого знакомства с таким классом программ - рекомендовал бы Hex Editor Neo (у него простой интерфейс + поддержка русского).
Как пользоваться:
- установить редактор и создать новый файл;
- в меню "Вид" выбрать нужный вариант отображения (шестн., двоичный и пр.). В своем примере я выбрал вариант "Двоичная", чтобы видеть Байт (и Биты внутри 👇);
- в правой колонке написать символ, например, "A". Слева, в столбике "00" появится все 8 Бит, которые используются для обозначения этого символа...
*
Онлайн сервисы-калькуляторы, таблицы
- calculatori.ru — ссылка на конвертер чисел из одной системы счисления в другую. Работает быстро, и вроде бы точно (хотя ручаться не могу 🙂). Кстати, на сайте много других полезных калькуляторов, рекомендую!
- programforyou.ru — этот калькулятор хорош тем, что показывает не просто перевод, но еще и то, как это считается (удобно, в некоторых случаях);
- calconline.pro — аналог предыдущего сайта, только здесь еще есть инструкция с объяснением, как идет счет (можно перепроверить вручную, если кто-то желает 🙂).
*
Список литературы
При написании заметки (в справочных целях) в т.ч. использовались следующие материалы:
- Меннингер К. История цифр. Числа, символы, слова. — М.: ЗАО Центрполиграф, 2011. — 543 с.
- Фомин С. В. Системы счисления. — М.: Наука, 1987.
- Босова Л.Л. Информатика и ИКТ: Учебник для 5 класса. – М.: БИНОМ. Лаборатория знаний, 2012.
- Зубков С.В. Assembler для DOS, Windows и UNIX. — 3. — Санкт-Петербург: «Питер», 2004.
- Материалы c сайта "Блог о программировании Артема Санникова", URL: https://artemsannikov.ru/ (дата обращения: день написания заметки).
- Материалы c сайта "Microsoft". URL: https://www.microsoft.com/ (дата обращения: день написания заметки).
- Материалы с сайта "Вопросы админу". URL: https://ocomp.info/ (дата обращения: день написания заметки).
- Материалы с сайта "Амперка". URL: http://wiki.amperka.ru/ (дата обращения: день написания заметки).
*
За сим откланиваюсь, всем успехов!
👋
Другие записи: