В какой системе исчисления хранит данные компьютер
Когда мы вводим некоторые буквы или слова, компьютер переводит их в числа, поскольку компьютеры могут понимать только цифры. Компьютер может понять систему позиционных чисел, где есть только несколько символов, называемых цифрами, и эти символы представляют различные значения в зависимости от положения, которое они занимают в номере.
Значение каждой цифры в номере можно определить с помощью –
Положение цифры в номере
Основа системы счисления (где база определяется как общее количество цифр, доступных в системе счисления)
Положение цифры в номере
Основа системы счисления (где база определяется как общее количество цифр, доступных в системе счисления)
Что такое восьмеричная система счисления?
Восьмеричная система счисления не так широко используется, как шестнадцатеричная двоичная. Он был разработан по той же идее, что и шестнадцатеричная система: сделать двоичную систему более компактной.
В восьмеричной системе двоичные числа группируются в тройки вместо квартетов. Итак, восьмеричная система — это основание-8, так как2 ^ 3 = 82Взаимодействие с другими людьми3Взаимодействие с другими людьмиВзаимодействие с другими людьми= 8.
Мы используем восемь основных символов для восьмеричной системы, которые заимствованы из десятичной системы. Двоичные триплеты могут иметь значения в диапазоне от0-70 — 7.
Значения разряда будут возрастать по возрастанию 88 справа налево.
Чтобы преобразовать двоичное в восьмеричное, мы следуем этой базовой технике:
- Сгруппируйте двоичное число в наборы по три (аналогично тому, что мы сделали с шестнадцатеричным).
- Довести каждую группу цифр до числа, кратного трем, путем добавления нулей
- Напишите соответствующий восьмеричный символ под каждой группой.
- Теперь у вас будет восьмеричное число
Преобразование восьмеричного числа в двоичное аналогично, но немного проще:
- Запишите двоичное представление для каждой восьмеричной цифры
- Соедините эти числа вместе
- У вас не будет двоичного числа
Введение в двоичную систему счисления
Компьютер использует биты для представления информации. Бит — это самая основная единица хранения в компьютере. Важный компонент компьютеров называется транзистором. Так же, как выключатель света, транзистор либо пропускает, либо предотвращает протекание тока. Итак, у него всего два состояния: включено и выключено.
Каждое число в компьютере — это электрический сигнал. На заре компьютеров электрические сигналы представляли собой состояние «включено» (отрицательный заряд) и состояние «выключено» (положительный заряд). Это образует своего рода бинарный переключатель.
Эти два состояния могут быть представлены одним из двух символов: 1 и 0. Это означает, что основание двоичной системы счисления равно 2. Для представления каждого числа нужны только символы.
Базовые цифры для двоичной системы просты: 0 для представления низкого состояния и 1 для представления высокого состояния.
Вместо того, чтобы представлять числа как отдельные единицы (например, число 10 или 400), мы используем группы единиц и нулей. Например, вот как это выглядит, когда компьютер считает до 10:
Это называется двоичной системой счисления. Каждая двоичная цифра называется битом. Когда дело доходит до размещения значений и цифр в этой системе, мы размещаем значения, соответствующие возрастающей степени 2 слева направо.
Самая правая цифра называется младшим значащим битом (LSB), а крайняя левая цифра — самым старшим битом (MSB).
Вы можете манипулировать битами влево и вправо с помощью побитовых операторов, чтобы эффективно изменять значение числа на уровне машинного кода.
пример
Восьмеричное число: 12570 8
Расчет десятичного эквивалента –
шаг | Восьмеричное число | Десятичное число |
---|---|---|
Шаг 1 | 12570 8 | ((1 x 8 4 ) + (2 x 8 3 ) + (5 x 8 2 ) + (7 x 8 1 ) + (0 x 8 0 )) 10 |
Шаг 2 | 12570 8 | (4096 + 1024 + 320 + 56 + 0) 10 |
Шаг 3 | 12570 8 | 5496 10 |
Примечание – 12570 8 обычно записывается как 12570.
Как перевести шестнадцатеричное число в десятичное:
В шестнадцатеричной системе номер позиции цифры в числе соответствует степени, в которую надо возвести число 16:
В настоящий момент есть множество калькуляторов, которые могут считать и переводить числа в разных системах счисления. Например, калькулятор Windows, который должен быть в инженерном виде. Очень удобен калькулятор и в DOS Navigator'е. Если у вас есть он, то отпадает необходимость в ручном переводе одной системы в другую, что, естественно, упростит вам работу. Однако, знать этот принцип крайне важно!
Что изучать дальше
Поздравляю! Теперь у вас есть хорошее введение в системы счисления для информатики. Вы сделали свой первый фундаментальный шаг в мир компьютерного программирования. Однако предстоит еще многому научиться. Следующие ваши шаги — узнать:
Оперативная память представляет собой таблицу, то есть состоит из ячеек. Каждая ячейка оперативной памяти представляет собой физическую систему, которая состоит из некоторого числа однородных элементов. В ячейках оперативной памяти хранятся все данные, в том числе и числа. В данном уроке рассказывается о том, как представляются целые и вещественные числа в компьютере.
Введение в шестнадцатеричную систему счисления
Теперь, когда мы немного узнали о двоичной системе, давайте узнаем о другой общей системе, используемой компьютерами: шестнадцатеричной системе счисления.
Двоичные числа просты для компьютеров, но не так просты для понимания людьми. А когда вы работаете с большими числами, становится сложно писать без ошибок. Итак, чтобы решить эту проблему, мы можем разделить двоичные числа на группы из четырех битов, образуя шестнадцатеричную систему счисления.
Шестнадцатеричная система представляет собой более компактный способ представления чисел на компьютере, поскольку для представления значения цифры требуется всего 4 бита.
Шестнадцатеричная система (часто называемая «шестнадцатеричной») состоит из 16 символов, поэтому ее основание составляет 16. В шестнадцатеричной системе используются 10 чисел десятичной системы и шесть дополнительных символов: A, B, C, D, E и F..
пример
Двоичный номер: 10101 2
Расчет десятичного эквивалента –
шаг | Двоичный номер | Десятичное число |
---|---|---|
Шаг 1 | 10101 2 | ((1 x 2 4 ) + (0 x 2 3 ) + (1 x 2 2 ) + (0 x 2 1 ) + (1 x 2 0 )) 10 |
Шаг 2 | 10101 2 | (16 + 0 + 4 + 0 + 1) 10 |
Шаг 3 | 10101 2 | 21 10 |
Примечание – 10101 2 обычно записывается как 10101.
В данный момент вы не можете посмотреть или раздать видеоурок ученикам
Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобретя в каталоге.
Преобразование между десятичным и двоичным числами
Теперь, когда мы знаем основы двоичной системы, давайте узнаем, как преобразовывать десятичную систему в двоичную. Начнем с преобразования двоичного числа в десятичное.
Мы знаем, что двоичная система имеет разрядные значения степени 2. Эти значения являются весами для цифр (0 или 1) в этих позициях. Вот как это работает:
Умножаем каждую цифру на ее вес (ее позиция умножаем на 2)
Суммируем их все, чтобы получить десятичное число
Итак, возьмем двоичное число 11111010 и переведем его в десятичную систему счисления.
Теперь попробуем наоборот. Как преобразовать десятичное число в двоичное? Один из способов сделать это — повторное деление, что очень удобно.
Итак, возьмем число 19. Начнем с деления его на два и выписки остатка. Когда мы разделим 19 на 2, мы получим 9 с остатком 1.
Затем мы берем 9 и делим его на 2, что дает нам результат 4 с остатком 1. Этот процесс продолжается до тех пор, пока мы не дойдем до нуля. Остатки, которые мы собрали, составляют наше двоичное число!
Многократное деление на 2 и отслеживание остатков — это быстрый способ преобразования десятичной дроби в двоичную!
Как перевести десятичное число в двоичное:
Можно делить его на два, записывая остаток справа налево:
В результате получаем: 10100b = 20
Получите невероятные возможности
Сегментация памяти в DOS.
Возьмем следующее предложение: "Изучаем сегменты памяти". Теперь давайте посчитаем, на каком месте стоит буква "ы" в слове "сегменты" от начала предложения включая пробелы. На шестнадцатом. Подчеркну, что мы считали слово от начала предложения.
Теперь немного усложним задачу и разобьем предложение следующим образом (символом "_" обозначен пробел):
В слове "Изучаем" символ "И" стоит на нулевом месте; символ "з" на первом, "у" на втором и т.д. В данном случае мы считаем буквы начиная с нулевой позиции, используя два числа. Назовем их сегмент и смещение. Тогда, символ "ч" будет иметь следующий адрес: 0000:0003, т.е. сегмент 0000, смещение 0003. Проверьте.
В слове "сегменты" будем считать буквы начиная с десятой позиции, но с нулевого смещения. Тогда символ "н" будет иметь следующий адрес: 0010:0005, т.е. пятый символ начиная с десятой позиции. 0010 - сегмент, 0005 смещение. Тоже проверьте.
В слове "память" считаем буквы начиная с 0020 сегмента и также с нулевой позиции. Т.о. символ "а" будет иметь аодрес 0020:0001, т.е. сегмент 0020, смещение 0001. Опять проверим.
Итак, мы выяснили, что для того, чтобы найти адрес нужного символа необходимо два числа: сегмент и смещение внутри этого сегмента. В Ассемблере сегменты хранятся в сегментных регистрах: CS, DS, ES, SS (см. предыдущий выпуск ), а смещения могут храниться в других (но не во всех).
Регистр CS служит для хранения сегмента кода программы (Code Segment - сегмент кода);
Регистр DS для хранения сегмента данных (Data Segment - сегмент данных);
Регистр SS для хранения сегмента стека (Stack Segment - сегмент стека);
Регистр ES дополнительный сегментный регистр, который может хранить любой другой сегмент (например, сегмент видеобуфера).
Пример N 2:
Давайте попробуем загрузить в пару регистров ES:DI сегмент и смещение буквы "м" в слове "памяти" из примера N 1 (см. выше). Вот как это запишется на Ассемблере:
Теперь в регистре ES находится сегмент с номером 20, а регистре DI смещение к букве "м" в слове "памяти". Проверьте, пожалуйста.
Здесь стоит отметить, что загрузка числа (т.е. какого-нибудь сегмента) напрямую в сегментый регистр запрещена. Поэтому мы в строке (1) загрузили сегмент в AX, а в строке (2) загрузили в регистр ES число 20, которое находилось в регистре AX:
Пара регистров CS:IP задает текущий адрес кода. Теперь рассмотрим, как все это происходит на конкретном примере:
Пример N 3.
Итак, строки (1) и (8) описывают сегмент: CSEG (даем имя сегменту) segment (оператор Ассемблера, указывающий, что имя CSEG - это название сегмента); CSEG ends (end segment - конец сегмента) указывает Ассемблеру на конец сегмента.
Запускаем программу из Примера N 3 в отладчике. Допустим, она загрузилась в свободный сегмент 1234h. Первая команда в строке (4) будет располагаться по такому адресу:
1234h:0100h (т.е. CS = 1234h, а IP = 0100h) (посмотрите в отладчике на регистры CS и IP).
AX = 0900h (точнее, AH = 09h, а AL = 0, т.к. мы загрузили командой mov ah,9 число 9 в регистр AH, при этом не трогая AL. Если бы AL был равен, скажем, 15h, то после выполнения данной команды AX бы равнялся 0915h)
IP = 102h (т.е. указывает на адрес следующей команды. Из этого можно сделать вывод, что команда mov ah,9 занимает 2 байта: 102h - 100h = 2).
Следующая команда (нажимаем клавишу F8) изменяет регистры DX и IP. Теперь DX указывает на смещение нашей строки ("Oleg$") относительно начала сегмента, т.е. 109h, а IP равняется 105h, т.е. адрес следующей команды. Нетрудно посчитать, что команда mov dx,offset My_name занимает 3 байта (105h - 102h = 3).
Обратите внимание, что в Ассемблере мы пишем:
а в отладчике видим следующее:
mov dx,109 (109 - шестнадцатеричное число, но CodeView символ 'h' не ставит. Это надо иметь в виду).
Почему так происходит? Дело в том, что при ассемблировании программы, Ассемблер подставляет вместо offset My_name реальный адрес строки с именем My_name в памяти. Можно, конечно, записать сразу
Программа будет работать нормально. Но для этого нам нужно высчитать самим этот адрес. Попробуйте вставить следующие команды, начиная со строки (7) в примере N 3:
Просто продублируем команду int 20h (хотя, как вы уже знаете, до строки (8) программа не дойдет).
Теперь ассемблируйте программу заново. Запускайте ее под отладчиком. Вы увидите, что в DX загружается не 109h, а другое число. Подумайте, почему так происходит. Это просто!
В окне "Memory" ("Память") вы должны увидеть примерно такое:
Позиция N1 (1234) - сегмент, в который загрузилась наша программа (может быть любым).
Позиция N2 (0000) - смещение в данном сегменте (сегмент и смещение отделяются двоеточием (:)).
Позиция N3 (CD 20 00 . F0 FE) - код в шестнадцатеричной системе, который располагается с адреса 1234:0000.
Позиция N4 (= .a.) - код в ASCII (ниже рассмотрим), соответствующий шестнадцатеричным числам с правой стороны.
В Позиции N2 (смещение) введите значение, которое находится в регистре DX после выполнения строки (5). После этого в Позиции N4 вы увидите строку "Oleg$", а в Позиции N3 - код символов "Oleg$" в шестнадцатеричной системе. Вот что загружается в DX! Это не что иное, как АДРЕС (смещенеие) нашей строки в сегменте!
Но вернемся. Итак, мы загрузили в DX адрес строки в сегменте, который мы назвали CSEG (строки (1) и (9) в Прмере N 3). Теперь переходим к следующей команде: int 21h. Вызываем прерывание DOS с функцией 9 (mov ah,9) и адресом строки в DX (mov dx,offset My_name).
Как я уже говорил раньше, для использования прерываний в программах, в AH заносится номер функции. Номера функций нужно запоминать.
Шестнадцатеричная система счисления
Характеристики шестнадцатеричной системы счисления следующие:
Использует 10 цифр и 6 букв, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Буквами обозначены числа, начинающиеся с 10. A = 10. B = 11, C = 12, D = 13, E = 14, F = 15
Также называется базовой системой счисления 16
Каждая позиция в шестнадцатеричном числе представляет степень 0 основания (16). Пример 16 0
Последняя позиция в шестнадцатеричном числе представляет собой степень x основания (16). Пример 16 x, где x представляет последнюю позицию – 1
Использует 10 цифр и 6 букв, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Буквами обозначены числа, начинающиеся с 10. A = 10. B = 11, C = 12, D = 13, E = 14, F = 15
Также называется базовой системой счисления 16
Каждая позиция в шестнадцатеричном числе представляет степень 0 основания (16). Пример 16 0
Последняя позиция в шестнадцатеричном числе представляет собой степень x основания (16). Пример 16 x, где x представляет последнюю позицию – 1
Здравствуйте. Если вы собираетесь изучить язык программирования python или любой другой язык, Вам необходимо знать, как компьютер хранит и обрабатывает числа. В привычной для нас системе исчисления десять знаков от 0 до 9, и называется она десятичной. А почему именно десять цифр? Видимо потому, что первобытные люди, которые изобрели эту систему, пользовались для счета пальцами рук.
Существует так же восьмиричная система исчисления. Она имеет только восемь цифр от 0 до 7. Есть еще и шестнадцатиричная система исчисления. В ней используются шестнадцать цифр. Для обозначения первых десяти цифр применяются цифры от 0 до 10, а недостающие шесть цифр дополняют буквами A, B, C, D, E, F. Но мы на них останавливаться не будем.
Сегодня поговорим о двоичной системе исчисления. Для записи любого числа используются две цифры 0 и 1. Процессор компьютера состоит из миллиардов маленьких транзисторов, которые имеют состояние логического нуля 0 – когда напряжение на выходе отсутствует, и состояние логической единицы 1 – когда на выходе присутствует напряжение. Компьютеру удобно использовать данную систему.
В привычной для нас десятичной системе, если нам нужно записать число меньше десяти, мы используем всего одну цифру. Для записи числа от 10 и 99, мы вводим новый разряд, который сначала мы приравниваем единице. Подставляя в младший разряд те же цифры от 0 до 9, после 9 опять идет 0 и мы получаем новый десяток. Когда во втором разряде мы дойдем до 99, вводим третий разряд от 100 до 999, потом четвертый, пятый и т. д.
В двоичной системе действует то же правило, только для записи числа используются две цифры 0 и 1. Поэтому, при увеличении на один, после 1 снова идёт 0, и при этом вводим следующий разряд. В двоичной системе числа от 0 до 10 выглядят так: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001.
Для выполнения операций над числами компьютер:
Переводит число из десятичной системы в двоичную;
выполняет необходимые операции (например, сложение);
результат обратно переводит в десятичную систему и выдает нам.
Давайте рассмотрим несколько примеров как можно число из десятичной системы исчисления, перевести в двоичную систему исчисления:
Возьмем число 123 и воспользуемся методом последовательным делением на число 2
Вообще, как компьютер может хранить, например, слово "диск"? Главный принцип - намагничивание и размагничивание одной дорожки (назовем ее так). Одна микросхема памяти - это, грубо говоря, огромное количество дорожек. Сейчас попробуем разобраться. Например:
нуль будет обозначаться как 0000 (четыре нуля),
(т.е. правую единицу заменяем на 0 и вторую устанавливаем в 1).
Уловили принцип? "0" и "1" - это т.н. биты. Один бит, как вы уже заметили, может быть нулем или единицей, т.е. размагничена или намагничена та или иная дорожка ("0" и "1" это условное обозначение). Если еще присмотреться, то можно заметить, что каждый следующий установленный бит (начиная справа) увеличивает число в два раза: 0001 в нашем примере = 1; 0010 два; 0100 четыре; 1000 восемь и т.д. Это и есть т.н. двоичная форма представления данных.
Т.о. чтобы обозначить числа от 0 до 9 нам нужно четыре бита (хоть они и не до конца использованы. Можно было бы продолжить: десять 1010, одиннадцать 1011 , пятнадцать 1111).
Компьютер хранит данные в памяти именно так. Для обозначения какого-нибудь символа (цифры, буквы, запятой, точки. ) в компьютере используется определенное количество бит. Компьютер "распознает" 256 (от 0 до 255) различных символов по их коду. Этого достаточно, чтобы вместить все цифры (0 - 9), буквы латинского алфавита (a - z, A - Z), русского (а - я, А - Я), а также другие символы. Для представления символа с максимально возможным кодом (255) нужно 8 бит. Эти 8 бит называются байтом. Т.о. один любой символ - это всегда 1 байт (см. рис. 1).
0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 |
р | н | р | н | н | р | н | р |
(буквы н и р обозначают: намагничено или размагничено соответственно)
Можно элементарно проверить. Создайте в текстовом редакторе файл с любым именем и запишите в нем один символ, например, "М" (но не нажимайте Enter!). Если вы посмотрите его размер, то файл будет равен 1 байту. Если ваш редактор позволяет смотреть файлы в шестнадцатеричном формате, то вы сможете узнать и код сохраненного вами символа. В данном случае буква "М" имеет код 4Dh в шестнадцатеричной системе, которую мы уже знаем или 1001101 в двоичной.
Т.о. слово "диск" будет занимать 4 байта или 4*8 = 32 бита. Как вы уже поняли, компьютер хранит в памяти не сами буквы этого слова, а последовательность "единичек" и "ноликов". "Почему же тогда на экране мы видим текст, а не "единички-нолики"? - спросите вы. Чтобы удовлетворить ваше любопытство, я забегу немного вперед и скажу, что всю работу по выводу самого символа на экран (а не битов) выполняет видеокарта (видеоадаптер), которая находится в вашем компьютере. И если бы ее не было, то мы, естественно, ничего бы не видели, что у нас творится на экране.
В Ассемблере после двоичного числа всегда должна стоять буква "b". Это нужно для того, чтобы при ассемблировании нашей программы Ассемблер смог отличать десятичные, шестнадцатеричные и двоичные числа. Например: 10 - это "десять", 10h - это "шестнадцать" а 10b - это "два" в десятичной системе.
Т.о. в регистры можно загружать двоичные, десятичные и шестнадцатеричные числа.
В результате в регистрах AX, BH и CL будет находится одно и тоже число, только загружаем мы его в разных системах. Компьютер же будет хранить его в двоичном формате (как в регистре BH).
Итак, подведем итог. В компьютере вся информация хранится в двоичном формате (двоичной системе) примерно в таком виде: 10101110 10010010 01111010 11100101 (естественно, без пробелов. Для удобства я разделили биты по группам). Восемь бит - это один байт. Один символ занимает один байт, т.е. восемь бит. По-моему, ничего сложного. Очень важно уяснить данную тему, так как мы будем постоянно пользоваться двоичной системой, и вам необходимо знать ее на "отлично".
Наше первое прерывание.
Функция 09h прерывания 21h выводит строку на экран, адрес которой указан в регистре DX.
Вообще, любая строка, состоящая из ASCII символов, называется ASCII-строка. ASCII символы - это символы от 0 до 255 в DOS, куда входят буквы русского и латинского алфавитов, цифры, знаки препинания и пр.
Изобразим это в таблице (так всегда теперь будем делать):
Функция 09h прерывания 21h - вывод строки символов на экран в текущую позицию курсора:
Выход: ничего
Вот мы и рассмотрели сегментацию памяти. Если я что-то упустил, то это рассмотрим в последующих выпусках. Очень надеюсь на то, что вы разобрались в данной теме.
Теперь интересная программка для практики, которая выводит в верхний левый угол экрана веселую рожицу на синем фоне:
Многие операторы вы уже знаете. Поэтому я буду объяснять только новые.
В данном примере мы используем вывод символа прямым отображением в видеобуфер.
В строках (4) и (5) загружаем в сегментный регистр ES число 0B800h, которое соответствует сегменту дисплея в текстовом режиме (запомните его!). В строке (6) загружаем в регистр DI нуль. Это будет смещение относительно сегмента 0B800h. В строках (8) и (9) в регистр AH заносится атрибут символа (31 - ярко-белый символ на синем фоне) и в AL - ASCII-код символа (01 - это рожица) соответственно.
В строке (10) заносим по адресу 0B800:0000h (т.е. первый символ в первой строке дисплея - верхний левый угол) атрибут и ASCII-код символа (31 и 01 соответственно) (сможете разобраться?).
Обратите внимание на запись регистров в строке (10). Скобки ( [ ] ) указывают на то, что надо загрузить число не в регистр, а по адресу, который содержится в регистре (в данном случае, как уже отмечалось, - это 0B800:0000h).
Можете поэксперементировать с данным примером. Только не меняйте строки (4) и (5). Сегментный регистр должен быть ES (можно, конечно, и DS, но тогда надо быть осторожным). Более подробно данный метод рассмотрим позже. Сейчас нам из него нужно понять принцип сегментации на практике.
Следует отметить, что вывод символа прямым отображением в видеобуфер является самым быстрым. Выполнение команды в строке (10) занимает 3 - 5 тактов. Т.о. на Pentium-100Mhz можно за секунду вывести 20 миллионов(!) символов или чуть меньше точек на экран! Если бы все программисты (а особенно Microsoft) выводили бы символы или точки на экран методом прямого отображения в видеобуфер на Ассемблере, то программы бы работали чрезвычайно быстро. Я думаю, вы представляете.
Без рубрики
Когда мы вводим слова на компьютер, он переводит их в числа. Фактически, для компьютера вся информация записывается как последовательность единиц и нулей. Компьютерные системы счисления — это то, как мы представляем числа в архитектуре компьютерной системы.
Системы счисления — одно из самых фундаментальных понятий, которое компьютерные ученые должны изучить. Это важный шаг для всех, кто хочет стать компьютерным ученым или программистом.
Сегодня мы познакомим вас с системами счисления, которые необходимы специалисту по информатике. Мы глубоко погрузимся в двоичную и шестнадцатеричную системы счисления.
Двоичная система счисления
Характеристики двоичной системы счисления следующие:
Использует две цифры, 0 и 1
Также называется базовой системой счисления 2
Каждая позиция в двоичном числе представляет степень 0 основания (2). Пример 2 0
Последняя позиция в двоичном числе представляет собой степень x основания (2). Пример 2 x, где x представляет последнюю позицию – 1.
Использует две цифры, 0 и 1
Также называется базовой системой счисления 2
Каждая позиция в двоичном числе представляет степень 0 основания (2). Пример 2 0
Последняя позиция в двоичном числе представляет собой степень x основания (2). Пример 2 x, где x представляет последнюю позицию – 1.
Что такое система счисления в информатике?
Люди считают уже давно. Для этого мы используем системы, которые связывают уникальные символы с определенными значениями. Это называется числовой системой, и это метод, который мы используем для представления чисел и управления ими.
Система счисления должна иметь уникальные символы для каждого значения, быть последовательной, обеспечивать сопоставимые значения и легко воспроизводимой.
Вы, вероятно, больше всего знакомы с десятичной системой, которая лежит в основе того, как люди считают. Десятичная система имеет основание 10, потому что она предоставляет 10 символов для представления всех чисел:
Люди используют десятичную систему счисления, потому что у нас есть 10 пальцев, на которые можно рассчитывать, но машины не могут позволить себе такой роскоши. Итак, мы создали другие системы счисления, которые выполняют те же функции. Компьютеры представляют информацию иначе, чем люди, поэтому нам нужны разные системы для представления чисел.
Компьютеры поддерживают следующие системы счисления:
- Двоичный
- Восьмеричный
- Десятичный
- Шестнадцатеричный
Как преобразовать двоичное в шестнадцатеричное
Теперь, когда мы понимаем как двоичную, так и шестнадцатеричную системы счисления, давайте узнаем, как преобразовывать двоичное число в шестнадцатеричное. Мы начинаем с двоичного числа в шестнадцатеричном.
Мы сгруппируем двоичные цифры в наборы по четыре (начиная сверху). Затем мы заменяем каждый квартет соответствующим шестнадцатеричным представлением.
Теперь преобразование шестнадцатеричного числа в двоичное! Давайте рассмотрим пример. Ниже мы расширяем каждую шестнадцатеричную цифру, заменяя ее эквивалентным двоичным квартетом.
Десятичная система счисления
Система счисления, которую мы используем в нашей повседневной жизни, – это десятичная система счисления. Система десятичных чисел имеет основание 10, так как использует 10 цифр от 0 до 9. В системе десятичных чисел последовательные позиции слева от десятичной точки представляют единицы, десятки, сотни, тысячи и т. Д.
Каждая позиция представляет определенную силу основания (10). Например, десятичное число 1234 состоит из цифры 4 в позиции единиц, 3 в позиции десятков, 2 в позиции сотен и 1 в позиции тысяч. Его значение можно записать как
Как программист или ИТ-специалист, вы должны понимать следующие системы счисления, которые часто используются в компьютерах.
Двоичная система счисления
База 2. Используемые цифры: 0, 1
Восьмеричная система счисления
База 8. Используемые цифры: от 0 до 7
Гекса десятичная система счисления
База 16. Используемые цифры: от 0 до 9, используемые буквы: A- F
Двоичная система счисления
База 2. Используемые цифры: 0, 1
Восьмеричная система счисления
База 8. Используемые цифры: от 0 до 7
Гекса десятичная система счисления
База 16. Используемые цифры: от 0 до 9, используемые буквы: A- F
Как перевести двоичное число в десятичное:
Надо сложить двойки в степенях, соответствующих позициям, где в двоичном стоят единицы. Например:
Возьмем число 20. В двоичной системе оно имеет следующий вид: 10100b
Итак (начнем слева направо, считая от 4 до 0; число в нулевой степени всегда равно единице (вспоминаем школьную программу по математике)):
Конспект урока "Представление чисел в компьютере"
На данном уроке мы с вами узнаем, как представляются целые и вещественные числа в компьютере.
А начнём мы с вами с целых чисел.
Как вы уже знаете, целые числа – это множество чисел, которое состоит из натуральных чисел, чисел, противоположных натуральным, и нуля.
Итак, оперативная память представляет собой таблицу, то есть состоит из ячеек.
Каждая ячейка оперативной памяти представляет собой физическую систему, которая состоит из некоторого числа однородных элементов. Эти элементы обладают двумя устойчивыми состояниями, которые соответствуют двум числам – нулю и единице. Каждый такой элемент предназначен для хранения одного из битов – разряда двоичного числа. Поэтому каждый элемент ячейки называется битом или разрядом.
То есть, можно сказать, что каждая ячейка оперативной памяти содержит число, представленное в двоичной системе счисления, так как вся информация представлена в памяти компьютера именно в этой системе счисления. Каждая ячейка также включает в себя некоторое количество клеточек (ячеек). В каждой клеточке содержится число ноль или один. Это зависит от того, какой код соответствует изначальному числу.
Давайте рассмотрим одну ячейку, которая состоит из n разрядов.
Она разбита на n клеточек. n обозначает количество разрядов или битов, отведённых под исходное число. Первая клеточка слева – это (n-1)-й разряд. Вторая – (n-2)-й разряд и так далее. Последняя клеточка – это 0-й разряд.
Можно сказать, что разряд – это степени для числа два в двоичной системе счисления.
Для представления целых чисел в компьютере существует несколько различных способов, которые отличаются друг от друга количеством разрядов и наличием или отсутствием знакового разряда. Обычно под целые числа отводится 8, 16, 32 или 64 разряда или бита.
Существует беззнаковое и знаковое представление чисел. Беззнаковое представление можно использовать только для неотрицательных чисел, отрицательные же числа представляются только в знаковом виде.
Беззнаковое представление используется для таких объектов, как адреса ячеек; счётчиков, например, количество символов в тексте; чисел, которые обозначают дату и время; размеров графических изображений в пикселях и много другое.
Для этих данных используется беззнаковое представление, так как они никак не могут быть отрицательными числами.
Давайте рассмотрим таблицу максимальных значений для беззнаковых целых n -разрядных чисел:
В первом столбце указано количество битов, во втором минимальное значение, а в третьем – максимальное значение.
Минимальное значение во всех строка равно нулю. А вот максимальное вычисляется по формуле 2 n – 1. То есть максимальное восьмиразрядное число будет равно 255.
2 8 – 1 = 256 – 1 = 255.
Максимальное значение целого неотрицательного числа достигается в том случае, когда во всех разрядах ячейки хранятся единицы.
Давайте разберёмся на примере.
Возьмём восьмиразрядную ячейку и поместим в неё максимально допустимое число 255.
Исходя из этого можем сказать, что наша ячейка состоит из 8 разрядов или клеточек. При переводе числа 255 в двоичную систему счисления получим 8 единиц. То есть в каждой клеточке будет содержаться по единице.
Число разрядов n=8. Давайте над каждой клеточкой расставим соответствующий разряд начиная с крайней левой.
Давайте вспомним общий вид нашей ячейки.
То есть ячейка из n разрядов, в нашем случае 8, состоит из n клеточек (снова из 8), а каждый разряд вычисляется по формуле n – 1, n – 2 и так далее. В зависимости от того, на каком месте находится ячейка.
А если мы возьмём все наши единицы и проставим над ними наши разряды, то мы можем перевести наше число из двоичной системы счисления в десятичную уже известным нам образом.
Если же брать число 256, то мы не сможем поместить его в восьмиразрядную ячейку, так как оно будет состоять из единицы и восьми нулей, а клеточек у нас 8.
Если мы возьмём число 65 535, то в двоичной системе счисления оно будет состоять из 16 единиц. А если шестнадцатиразрядную ячейку снова представить, как строку, состоящую из 16 клеточек и расставить соответствующие разряды, то она будет выглядеть следующим образом:
Для получения компьютерного представления беззнакового целого числа достаточно перевести его в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Давайте рассмотрим, как будет выглядеть число 125 в восьмиразрядном и шестнадцатиразрядном представлениях. Для этого переведём наше число в двоичную систему и получим следующее:
Наше число состоит из 7 цифр. Поместим его в восьмиразрядную ячейку.
Но ячеек 8, а цифр 7. В таком случае помещаем наше число в крайние справа семь ячеек, а в первую левую запишем ноль.
Он не повлияет на наше число, но все разряды ячейки должны быть заполнены цифрами.
А если мы поместим это же число в шестнадцатиразрядную ячейку, то получим 9 ячеек слева, заполненных нулями, а в остальных 7 будет располагаться наше число.
То есть можно сказать, что мы записываем наше число в двоичной системе счисления, а затем дополняем эту двоичную запись незначащими нулями слева в зависимости от того, из скольких разрядов состоит наше представление числа.
Это то, что касается беззнакового представления чисел.
При представлении числа со знаком (плюсом, если это положительное число, и минусом, если это отрицательное число) самый старший разряд, то есть тот, который находится слева, отводится под знак числа, а остальные разряды – под само число. Если число положительное, то в самый старший разряд (самую левую клеточку) пишется цифра 0, а если отрицательное, то 1.
Такое представление чисел называется прямым кодом. Такие коды в компьютере используются для хранения положительных чисел в запоминающих устройствах, для выполнения операций с положительными числами.
Например, число 56 в двоичной системе будет равно: 1110002.
Оно в себя включает 6 цифр. Запишем его в восьмиразрядную ячейку.
Две оставшиеся слева клеточки заполним нулями, так как число положительное.
А если бы наше число было отрицательным, то оно выглядело бы следующим образом.
В старший разряд мы поставили единицу, так как число отрицательное.
Для выполнения операций с отрицательными числами используется дополнительный код, который позволяет заменить операцию вычитания сложением.
Дополнительный код целого отрицательного числа может быть получен по следующему алгоритму:
· записать прямой код модуля числа;
· инвертировать его (заменить единицы нулями, нули – единицами);
· прибавить к инверсному коду единицу.
Давайте рассмотрим применение этого алгоритма на примере.
Нам дано число –25. При переводе в двоичную систему модуля числа получим следующее число: 110012.
Теперь смотрим на первый пункт. Нам необходимо записать прямой код модуля числа. Возьмём восьмиразрядный код. То есть наше число будет записано в клеточки, а в трёх пустых клеточках слева от него – нули.
Далее во втором пункте нам необходимо инвертировать наше число, то есть заменить единицы нулями, а нули – единицами. Получим следующее:
Теперь нам осталось, исходя из третьего пункта, прибавить к числу единицу. Получим следующее число:
Всё, что говорилось ранее, относилось к представлению целых чисел. Для представления вещественных чисел используется немного другой способ. Давайте рассмотрим его.
Любое вещественное число A может быть записано в экспоненциальной форме:
m – мантисса числа.
q – основание системы счисления.
p – порядок числа.
Возьмём для примера число 1 345 572. Его можно представить различными способами:
С экспоненциальной формой записи вы наверняка уже встречались. Например, считая на калькуляторе, вы могли получить следующее число: 1,34Е + 6.
Оно обозначает следующее: 1,34 · 10 6 . То есть знак Е – это основание десятичной системы счисления.
Из примера, можно сделать вывод, что положение запятой может изменяться.
Для единообразия мантиссу обычно записывают как правильную дробь, которая имеет после запятой цифру, отличную от нуля. То есть наше число 1 345 572 будет выглядеть следующим образом: 1 345 572 = 0,1345572 • 10 7 .
Вещественное число может занимать в памяти компьютера 32 или 64 разряда.
То есть наша ячейка в памяти может состоять из 32 или 64 клеточек. При этом выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.
Давайте разберёмся на примере. Возьмём число 125 в десятичной системе счисления и запишем её в тридцатидвухразрядную ячейку.
Для начала нам нужно перевести число 125 в двоичную систему счисления. Получим следующее: 12510 = 11111012.
Теперь запишем это число в экспоненциальной форме.
Ставим равно. Мантиссой числа будет следующее: 0,1111101.
Ставим знак умножения. q – это основание системы счисления. В нашем случает это двоичная система счисления. Число 2 в двоичной системе счисления будет состоять из цифр 1 и 0. Запишем его.
11111012 = 0,1111101 · 10.
p – это порядок числа или же степень. Мы с вами перенесли наше число на семь знаков вправо после запятой. Значит наше p будет равно 7. При переводе числа семь в двоичную систему счисления получим следующее:
11111012 = 0,1111101 · 10 111 .
Мы с вами записали двоичное число в экспоненциальной форме.
Теперь перенесём всё в клеточки ячейки памяти, размером 32 разряда.
Под знак и порядок выделяется восемь клеточек, под знак и мантиссу двадцать четыре.
Первую клеточку слева выделяем под знак. Так как наше число положительное, то ставим цифру 0.
В разделе «Знак и порядок» запишем число 7 в двоичной системе счисления. Оставшиеся клеточки заполним нулями.
Теперь переходим к разделу «Знак и мантисса». В первой слева снова ставим цифру ноль, которая обозначает, что знак нашего числа положительный.
Далее запишем наше число, а оставшиеся клеточки заполним нулями.
Мы записали наше число в тридцатидвухразрядную ячейку.
Диапазон представления вещественных чисел определяется количеством разрядов, отведённых для хранения порядка чисел, а точность – количеством разрядов, отведённых для хранения мантиссы.
Давайте рассмотрим следующий пример:
В нём максимальное значение порядка числа составляет: 11111112 = 12710.
Следовательно, максимальное значение числа будет равно: 0,11111111111111111111111 · 10 111 .
Широкий диапазон представления вещественных чисел важен для решения научных и инженерных задач. Но в тоже время алгоритмы обработки таких чисел более трудоёмки по сравнению с алгоритмами обработки целых чисел.
А теперь пришла пора подвести итоги урока.
Сегодня мы узнали, как представляются целые и вещественные числа в компьютере, а также научились преобразовывать числа в ячейки памяти, учитывая разрядность ячейки.
Восьмеричная система счисления
Характеристики восьмеричной системы счисления следующие:
Использует восемь цифр, 0,1,2,3,4,5,6,7
Также называется базовой системой счисления 8
Каждая позиция в восьмеричном числе представляет степень 0 основания (8). Пример 8 0
Последняя позиция в восьмеричном числе представляет собой степень x основания (8). Пример 8 x, где x представляет последнюю позицию – 1
Использует восемь цифр, 0,1,2,3,4,5,6,7
Также называется базовой системой счисления 8
Каждая позиция в восьмеричном числе представляет степень 0 основания (8). Пример 8 0
Последняя позиция в восьмеричном числе представляет собой степень x основания (8). Пример 8 x, где x представляет последнюю позицию – 1
Читайте также: