4865

Системы счисления. Двоичная система счисления. Перевод чисел из одной системы счисления в другую. Машинное представление базовых типов С++

Лекция

Информатика, кибернетика и программирование

Системы счисления. Двоичная система счисления. Перевод чисел из одной системы счисления в другую. Перевод целой части. Перевод дробной части. Машинное представление базовых типов С++. Системы счисления. Под числом понимают некоторую абстрактную меру...

Русский

2012-11-28

67.5 KB

22 чел.

Системы счисления. Двоичная система счисления. Перевод чисел из одной системы счисления в другую. Перевод целой части. Перевод дробной части. Машинное представление базовых типов С++.

Системы счисления.

Под числом понимают некоторую абстрактную меру количества. Системой счисления называют способ записи чисел с помощью письменных знаков,  называемых цифрами. Если значение цифры в записи числа зависит от её положения, систему счисления называют позиционной. Например, в десятичной системе счисления число 01 обозначает единицу, 10 – десять. Количество цифр в системе счисления называется её основанием. В позиционной системе счисления с основанием  используется  цифр (от  до ), числа записываются в виде , где  – цифры. Примером непозиционной системы счисления может служить система римского счета.

Для организации машинных вычислений удобна двоичная система счисления, содержащая только две цифры – 0 и 1. Кроме того, в программировании часто используются восьмеричная и шестнадцатеричная системы.

Перевод чисел из одной системы счисления в другую.

Число, записанное в системе с основанием  можно перевести в систему с другим основанием, воспользовавшись формулой:

 (1)

Для целых чисел, очевидно,  для всех отрицательных , поэтому для перевода целых чисел можно воспользоваться следующим алгоритмом:

  1.  Вычислить частное и остаток от деления заданного числа на основание целевой системы счисления . Остаток от деления будет очередной цифрой  в записи числа в новой системе счисления. Цифры нумеруются справа налево.
  2.  Если частное равно нулю, перевод числа закончен, иначе применяем к частному пункт 1.

Если , то необходимо ввести дополнительные символы для обозначения цифр новой системы счисления со значениями большими либо равными 10. Как правило, для этого используются буквы латинского алфавита.

Пример:

  1.  Перевести число 123410 в семиричную систему счисления.

1234 = 176 * 7 + 2  => a0 = 2

176  =   25 * 7 + 1  => a1 = 1

  25  =     3 * 7 + 4  => a2 = 4

    3  =     0 * 7 + 3  => a3 = 3

В итоге получаем  123410 = 34127 = 3 * 73 + 4 * 72 + 1 * 71 + 2 * 70

  1.  Перевести число 74219 в шестнадцатиричную систему счисления.

74279 = 7 * 93 + 4 * 92 + 2 * 91 + 7 * 90 = 545210

5452 = 340 * 16 + 12  => a0 = C

 340 =   21 * 16 + 4   => a1 = 4

   21 =     1 * 16 + 5    => a2 = 5

     1 =     0 * 16 + 1    => a2 = 1

74279 = 154C16

Особенно удобно осуществляется перевод между двоичной, восьмеричной и шестнадцатеричной системами, наиболее часто используемыми в программировании. Заметим, что 16 = 24, а 8 = 23, откуда следует, что каждая цифра в шестнадцатиричной системе может быть выражена 4 цифрами в двоичной, а каждая цифра восьмеричной – тремя цифрами двоичной, например:

616 = 01102

B16 = 10112

F16 = 11112

28 = 0102

58 = 1012

78 = 1112

Таким образом, для перевода шестнадцатеричного числа в двоичную систему, достаточно вычислить представление каждой его цифры в двоичной системе, и составить из них результат:

B6F16 = B * 162 + 6 * 161 + F * 160 = B * ( 24 )2 + 6 * ( 24 )1 + F * ( 24 )0 = …

= ( 1011 0110 1111 )2

2578 = 2 * 82 + 5 * 81 + 7 * 80 = 2 * ( 23 )2 + 5 * ( 23 )1 + 7 * ( 23 )0 = ( 010 101 111 )2

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

( 11011011001 )2 = ( 0110 1101 1001)2 = 6D916

 ( 11011011001 )2 = ( 011 011 011 001)2 = 33318

Перевод дробной части.

Для перевода дробной части также воспользуемся формулой (1), сформулировав алгоритм перевода:

  1.  Умножить дробную часть числа на .
  2.  Целая часть результата будет очередной цифрой  в записи числа в целевой системе счисления. Цифры  в записи числа располагаются слева направо в порядке возрастания модуля . Если дробная часть числа равна нулю, процесс перевода закончен, иначе – применить к дробной части этот же алгоритм начиная с пункта 1.

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

  1.  Перевести число 0.625 в двоичную систему:

0.625 * 2 = 1.25  => a-1 = 1

0.25   * 2 = 0.5    => a-2 = 0

0.5     * 2 = 1.0    => a-3 = 1

В итоге, 0.62510 = 0.1012

Двоичная система счисления.

Правила арифметических действий в двоичной системе аналогичны десятичной и базируются на следующих таблицах:

Сложение:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 102 (перенос разряда)

Умножение:

0 * 0 = 0

0 * 1 = 0

1 * 0 = 0

1 * 1 = 1

С машинным представлением чисел в двоичной системе связаны несколько понятий:

Бит – количество информации, содержащееся в одном разряде двоичной системы счисления. Иначе говоря, один бит – это данные, которые можно выразить значением 1 или 0.

Двоичный разряд – элемент архитектуры компьютера, хранящий один бит данных.

Машинное слово – упорядоченное множество двоичных разрядов. Количество разрядов в машинном слове называется его размерностью. Разряды нумеруются справа налево, начиная с 0. Самый правый разряд называется младшим, самый левый – старшим.

Байт – машинное слово минимальной размерности, используемое для хранения, передачи и обработки данных. Как правило, размерность байта равна 8 двоичных разрядов. Как правило, размерности всех других машинных слов кратны байту.

Размерность байта принята не только для представления данных в большинстве компьютеров, но и в качестве стандарта для хранения данных на внешних носителях, для передачи данных по каналам связи, для представления текстовой информации. Кроме того, байт является универсальной «мерой» – размерность всех форм представления данных устанавливается кратной байту. При этом машинное слово считается разбитым на байты, которые нумеруются, начиная с младших разрядов.

Стандартное машинное слово – машинное слово, размерность которого совпадает с разрядностью процессора. Такое машинное слово процессор способен обработать сразу целиком, и большинство внутренних инструкций процессора использует его для обработки данных. Кроме того, используются укороченное машинное слово и двойное машинное слово (обозначаемое в языках программирования терминами short и long).

Машинное представление базовых типов.

Для представления положительных (беззнаковых, unsigned) целых чисел используется прямой машинный код, в котором число интерпретируется естественным образом, все разряды являются значащими, что позволяет хранить число в диапазоне 0 ~ 2N-1, где N – размерность (количество разрядов), отвечающее заданному типу данных.

Для знаковых целых чисел диапазон значений разбивается на две половины (для отрицательных и положительных чисел): -2N-1-1 ~ 2N-1-1. При этом возможны два способа представления: в прямом коде старший разряд отводится для хранения знака (0 для положительного и 1 для отрицательного), а модуль числа хранится в младших N-1 разрядах в естественном виде.

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

  1.  Получить прямой код модуля числа.
  2.  Инвертировать код (заменить 1 на 0 и наоборот).
  3.  Прибавить к инверсному коду 1.

Например, для числа -37, интерпретируя его как величину типа char (1 байт), получим:

  1.  Прямой код модуля 37:   00100101
  2.  Инверсный код:   11011010
  3.  Дополнительный код:  11011011

При обратном преобразовании по старшему разряду дополнительного кода необходимо определить знак числа. Если оно отрицательное, то используется обратный алгоритм:

  1.  Вычесть из кода единицу.
  2.  Инвертировать код.
  3.  Интерпретировать полученный код как модуль отрицательного числа.

Например:

  1.  00010111. В старшем разряде 0, значит это положительное число, 23.
  2.  11000000. Число отрицательное:
    1.  Вычитаем единицу:   110000002 – 12 = 10111111
    2.  Инвертируем:           01000000
    3.  Получаем число:          - 64

Дополнительный код обладает важным преимуществом, связанным с тем, что вычитание чисел (A – B) эквивалентно сложению с вычитаемым, записанным в дополнительном коде (A + (-B)) что позволяет процессору поддерживать на уровне микроархитектуры только операцию сложения.

Представление вещественных чисел.

Вещественные числа в памяти представляются в форме с плавающей точкой – число (R) выражается в виде произведения мантиссы m на основание системы счисления p в целой степени n (порядок): R = m * pn.

 Поскольку в таком представлении одно и то же число можно записать в нескольких представлениях: R = m * pn  =  (m/p) * pn+1 = (m/p2) * pn+2…, в компьютерах используется нормализованное представление, в котором мантисса должна удовлетворять условию 0.1p < m < 1p, что означает, что мантисса меньше 1 и первая значащая цифра – не 0.

Как правило, числа с плавающей точкой хранятся в следующем формате: один разряд выделяется для хранения знака мантиссы. Некоторое количество разрядов (в зависимости от размерности типа данных) отводится под хранение порядка, как обычного целого числа со знаком. Остальные разряды используются для хранения нормализованной мантиссы. Из этого следует, что вещественное число не всегда представлено точным значением, поскольку даже точное десятичное число может не иметь соответствующего точного внутреннего представления. Например, может оказаться, что число 0.1 будет иметь ближайшее к нему внутреннее представление, соответствующее 0.9999999997 или 1.0000000001.

Представление символьных данных.

Символьные данные представляются в С++ на основе правила, по которому каждому печатному символу ставится в соответствие определенное число (код символа). Перечень всех возможных символов вместе с соответствующими ими кодами можно представить в виде таблицы символов. Наиболее часто используемая таблица такого типа, содержащая символы латинского алфавита, называется ASCII.

Каждый символ представляется одним байтом, способным хранить 256 различных значений. Для работы с символами используется базовый тип данных char. Поскольку char содержит целочисленное значение (код символа), то к нему применимы любые арифметические операции.


 

А также другие работы, которые могут Вас заинтересовать

76940. Подвздошные артерии 182.17 KB
  Общая подвздошная артерия ( a. iliaca communis): правая и левая - магистральные артерии с диаметром в 1,1-1,2 см - начинаются на уровне IV-V поясничных позвонков (бифуркация аорты), направляются в малый таз, боковых ветвей не имеют и на уровне крестцово-подвздошных суставов разделяются на внутреннюю и наружную подвздошные артерии: правые и левые.
76944. Понятие и система субъектов административного права. Административная правосубъектность 27.29 KB
  Понятие и система субъектов административного права. Субъект административного права лицо или организация которые в соответствии с действующим законодательством РФ могут быть участниками сторонами регулируемых административных управленческих общественных отношений. Главное что объединяет многообразные субъекты административного права это административная правоспособность. Субъекты административного права могут быть индивидуальными и коллективными.
76945. Граждане Российской Федерации как субъекты административного права. Права, обязанности и гарантии реализации прав граждан в сфере государственного управления 26.91 KB
  Граждане Российской Федерации как субъекты административного права. Права обязанности и гарантии реализации прав граждан в сфере государственного управления. Гражданин как субъект административного права это участник общественных отношений выступающий в качестве носителя содержащихся в нормативных актах конкретных прав и обязанностей которыми он наделен для реализации своих жизненных потребностей участия в управлении делами общества и государства. Административноправовой статус гражданина это составная часть правового статуса личности...
76946. Особенности административно-правового статуса иностранных граждан и лиц без гражданства 28.5 KB
  Правовое положение иностранных граждан на территории РФ регулируется российским законодательством а также международными договорами. Законы РФ распространяются на всех лиц находящихся на ее территории. Правовое положение иностранных граждан регламентируется Конституцией законами России международными договорами правилами пребывания иностранных граждан на территории РФ и транзитного проезда иностранных граждан через территорию РФ. Законодательство различает иностранных граждан постоянно проживающих и временно пребывающих на территории...
76947. Понятие и признаки органов исполнительной власти РФ, система органов исполнительной власти, их классификация 29.22 KB
  Понятие и признаки органов исполнительной власти РФ система органов исполнительной власти их классификация. Орган исполнительной власти государственное учреждение обладающее относительной самостоятельностью структурной организацией наделенное государственно-властными полномочиями исполнительно-распорядительного характера и действующее в пределах определенной территории. Признаки органа исполнительной власти: является государственным учреждением; вместе с органами законодательной и судебной власти входит в систему органов...
76948. Президент Российской Федерации и исполнительная власть 27.36 KB
  Назначает и отзывает после консультаций с соответствующими комитетами или комиссиями палат Федерального Собрания дипломатических представителей РФ в иностранных государствах и международных организациях; Федеральные министерства федеральные службы и федеральные агентства руководство деятельностью которых осуществляет Президент РФ: Министерство внутренних дел РФ подведомственная ему Федеральная миграционная служба Министерство РФ по делам гражданской обороны чрезвычайных ситуаций и ликвидации последствий стихийных бедствий Министерство...