Вы здесь: HomeВикиБит и Байт

Бит и Байт

Биты. ассемблер.Основной и неделимой единицей данных является бит. Слово «bit» — это сокращение от «binary digit» — двоичная цифра. Бит может принимать два значения — 0 и 1 — ложь или истина, выключено или включено. На логике двух состояний основаны все логические цепи компьютеров, поэтому поговорим о бите более подробно.

Двоичное число содержит столько битов, сколько двоичных цифр в его записи, поэтому диапазон допустимых значений выводится из количества разрядов (цифр), отведенных для числа. Возьмем положительное целое двоичное число, состоящее из четырех битов: оно может выражать 24 или шестнадцать различных значений.

 Биты (разряды) двоичного числа нумеруются справа налево, от наименее значимого до наиболее значимого. Нумерация начинается с 0. Самый правый бит числа — это бит с номером 0 (первый бит). Этот бит называется LSB-битом (Least Significant Bit — наименее значимый бит). Подобно этому самый левый бит называется MSB-битом (Most Significant Bit — наиболее значимый бит). Биты могут объединяться в группы, группа из четырех битов называется полубайтом (nibble). Компьютер не работает с отдельными битами, обычно он оперирует группами битов, например, группа из восьми битов образует базовый тип данных, который называется байтом. Восемь битов в байте — это не закон природы, а количество, произвольно выбранное разработчиками IBM, создававшими первые компьютеры.

Большие группы битов называются словом (word) или двойным словом (dword — double word). Относительно PC-совместимых компьютеров мы можем сказать следующее:

1 байт = 8 бит
1 слово (word) = 2 байта = 16 бит
1 двойное слово (dword) = 4 байта = 32 бит

Один байт — это наименьшее количество данных, которое может быть прочитано из памяти или записано в нее, поэтому каждый байт памяти имеет индивидуальный адрес. Байт может содержать число в диапазоне 0 — 255 (то есть 28 — 256 различных чисел). В большинстве случаев этого значения недостаточно, поэтому используется следующая единица данных — слово. Слово может содержать число в диапазоне 0 — 65 535 (то есть 216 = 65 536 значений). Двойное слово имеет диапазон значений 0 — 4 294 967 295 (2324 294 967 296 значений).

Ассемблер биты и байты.

Давным-давно, еще во времена первых компьютеров, емкость носителей информации представлялась в байтах. Со временем технологии усовершенствовались, цены на память падали, а требования к обработке информации возрастали. Поэтому выражать емкость в байтах стало неудобно. Решили, что емкость будет выражаться в килобайтах (KB, Kb, Кб или просто к). Но, в отличие от международной системы SI, приставка «кило» означает не 1000, а 1024. Почему именно 1024? Поскольку все в компьютере было завязано на двоичной системе, для простоты любое значимое число должно было выражаться как степень двойки. 1024 — это 210. Следующие приставки — М (мегабайт, MB, Mb, Мб), G (гигабайт, GB, Гб), Т (терабайт, ТВ, ТБ) и Р (петабайт, РВ, ПБ) — вычисляются умножением 1024 на предыдущее значе­ние, например, 1 Кб = 1024, значит, 1 Мб = 1 Кб * 1024 = 1024 * 1024 - 1 048576 байт. Думаю, с этим все понятно, давайте вернемся к типам данных.

В языках программирования высокого уровня есть специальные типы данных, позволяющие хранить символы и строки. В языке ассемблера таких типов данных нет. Вместо них для представления одного символа используется  байт, а для представления строки — группа последовательных байтов. Тут все просто. Каждое значение байта соответствует одному из символов ASCII-таблицы (American Standard Code for Information Interchange). Первые 128 символов — управляющие символы, латинские буквы, цифры — одинаковы для всех компьютеров и операционных систем. Давайте рассмотрим таблицу кодов ASCII. 

 Ассемблер. Таблица ASCII кодов

Шестнадцатеричные цифры в заголовках строк и столбцов таблицы представляют числовые значения отдельных символов. Например, координаты заглавной латинской буквы А — 40 и 01. Сложив эти значения, получим 041h (то есть 65 в десятичной системе) — код символа 'А' в ASCII-коде. Печатаемые символы в ASCII-таблице начинаются с кода 20h (или 32d). Символы с кодом ниже 32 представляют так называемые управляющие символы.

Наиболее известные из них : это 0Аh или LF — перевод строки, и 0Dh - CR — возврат каретки. Важность управляющих символов CR и LF обусловлена тем, что они обозначают конец строки — тот символ, который в языке программирования С обозначается как \n. К сожалению, в различных операционных системах определяются по-разному: например, в Windows (и DOS) он представляется двумя символами (CR, LF — 0Dh, 0Аh), а в операционной системе UNIX для обозначения конца строки используется всего один символ (LF — 0Аh).

Символы с кодами от 128 до 256 и выше стали «жертвами» различных стандартов и кодировок. Обычно они содержат национальные символы, например, у нас это будут символы русского алфавита и, возможно, некоторые символы псевдографики, в Чехии — символы чешского алфавита и т.д. Следует от метить, что для русского языка используются кодировки СР 866 (в DOS) и СР 1251 (Windows).