- •1. Структурная схема микропроцессора (на примере i8086). Назначение регистров.
- •3. Организация основной памяти.
- •3. Структура и характеристики оперативной памяти
- •4. Модель osi
- •5. Стек протоколов tcp/ip
- •6. Классификация компьютерных сетей
- •7. Данные и модели данных
- •8. Модель данных «сущность-связь»
- •Ограничения целостности
- •9. Реляционная модель данных
- •10. Основные направления исследования в области ии
- •11. Метод резолюции в лппп.
- •12. Продукционная модель
- •13. Основные парадигмы языков программирования.
- •14. Основные понятия ооп: инкапсуляция, наследование, полиморфизм
- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследование
- •15. Понятие алгоритма.
- •16. Понятие о временной и емкостной сложности алгоритма
- •17. Машина Тьюринга: детерминированная и недетерминированная
- •18. Понятие формального языка и формальной грамматики
- •19. Основные понятия теории графов.
- •20. Понятие количества информации и энтропии. Теорема Шеннона.
- •21. Деревья в теории графов.
- •22. Модели линейного программирования (постановка задачи, математическая модель, решение графическим методом).
- •23. Двойственность в задачах линейного программирования.
- •25. Элементы теории игр.
- •2. Подпрограммы. Процедуры и функции
- •3. Массивы
- •4. Записи
- •5. Работа с Динамическими данными
- •6. Динамические структуры данных. Линейные списки.
- •7. Динамические структуры данных: двоичные деревья
- •8. Работа с файлами
- •9.Операции целочисленной арифметики
- •10. Системы счисления. Перевод чисел из одной системы счисления в другую
- •11. Язык sql. Назначение и основные команды.
- •Манипулирование данными
- •Простые запросы
- •12. Алгоритмы внутренней сортировки.
- •13. Алгоритмы внешней сортировки
- •14. Нахождение кратчайших путей в графе
- •15. Поиск в ширину
- •16. Поиск остова и минимального остова.
- •17. Линейная модель работы информационно-поисковой системы.
- •18. Хеширование
- •Основные достоинства в-дерева
- •20. Логические вопросно-ответные системы:выполнение запросов различных типов.
- •21. Поиск в семантической сети.
- •22. Принципы динамического программирования. Иллюстрация на примере.
- •23. Адресация в Интернете
- •Доменные имена
- •Общий вид формата url-адреса
- •Как работает dns-сервер
- •24. Основные сервисы в сети Интернет.
- •Word Wide Web (www) - "Всемирная паутина"
- •Поиск информации в сети
- •VoIp сервис
- •Мессенджеры
- •25. Использование html. Структура Web(html) страницы.
10. Системы счисления. Перевод чисел из одной системы счисления в другую
Как известно, системой счисления называется совокупность правил записи чисел. Системы счисления подразделяются на позиционные и непозиционные. Как позиционные, так и непозиционные системы счисления используют определенный набор символов- цифр, последовательное сочетание которых образует число. Непозиционные системы счисления появились раньше позиционных. Они характеризуются тем, что в них символы, обозначающие то или иное число, не меняют своего значения в зависимости от местоположения в записи этого числа. Классическим примером такой системы счисления является «римская». В ней для записи чисел используются буквы латинского алфавита. При этом I означает единицу, V— пять, Х- десять, L - пятьдесят, С - сто, D - пятьсот, М- тысячу. Для получения количественного эквивалента числа в римской системе счисления необходимо просто просуммировать количественные эквиваленты входящих в него цифр. Исключение из этого правила составляет случай, когда младшая цифра идет перед старшей, - в этом случае нужно не складывать, а вычитать число вхождений этой младшей цифры. К примеру, количественный эквивалент числа 577 в римской системе счисления - это DLXXVII=500+50+10+10+5+l+l=577. Другой пример: CDXXIX=500-100+10+10-1+10=429.
В позиционной системе счисления количество символов в наборе равно основанию системы счисления. Место каждой цифры в числе называется позицией. Номер позиции символа (за вычетом единицы) в числе называется разрядом. Разряд 0 называется младшим разрядом. Каждой цифре соответствует определенный количественный эквивалент. Введем обозначение- запись А(р) будем обозначать количественный эквивалент числа А, состоящего из n цифр ak (где к=0,...,n-1) в системе счисления с основанием р. Это число можно представить в виде последовательности цифр: А(р) = an-lan-2...ala0 . При этом, конечно, всегда выполняется неравенство ак<р.
В общем случае количественный эквивалент некоторого положительного числа А в позиционной системе счисления можно представить выражением: А(р) = an-1 * pn-1 + аn-2 *рn-2+... + а1 * р1 + а0 * р0 где: р - основание системы счисления (некоторое целое положительное число); а - цифра данной системы счисления; n - номер старшего разряда числа.
Для получения количественного эквивалента числа в позиционной системе счисления необходимо сложить произведения количественных значений цифр на степени основания, показатели которых равны номерам разрядов (обратите внимание, что нумерация разрядов с нуля.
Двоичная система счисления.
Набор цифр для двоичной системы счисления: (0, 1) основание степени = 2.
Количественный эквивалент некоторого целого n - значного двоичного числа вычисляется согласно формуле : A(2) = an-1 * 2n-1 + аn-2 * 2n-2 +... + а1 * 21 + а0 * 20.
Как мы уже отмечали, наличие этой системы счисления обусловлено тем, что компьютер построен на логических схемах, имеющих в своем элементарном виде только два состояния - включено и выключено. Производить счет в двоичной системе просто для компьютера, но сложно для человека. Например, рассмотрим двоичное число 10100111.
В ычислим количественный эквивалент этого двоичного числа. Согласно формуле, это будет величина, равная следующей сумме: 1*27+0*26+1*25+0*24+0*23+1*22+1*21+1*20 = 128+0+32+0+0+4+1 = = 165
Сложение и вычитание двоичных чисел выполняется так же, как и для других позиционных систем счисления, например десятичной. Точно так же выполняются заем и перенос единиц. К примеру:
Шестнадцатеричная система счисления.
Данная система счисления имеет следующий набор цифр: {0, 1, 2, ..., 9, А, В, С, D, E, F}, основание системы = 16. Количественный эквивалент некоторого целого шестнадцатеричного числа вычисляется согласно формуле: A(16) = an-1 * 16n-1 + аn-2 * 16n-2 +... + а1 * 161 + а0 * 160.
К примеру, количественный эквивалент шестнадцатеричного числа F45ED23C = 15*167 + 4*166 + +5*165 + 14*164+13*163+2*162+3*161+12*160 = 4099854908
Шестнадцатеричная система счисления при производстве вычислений несколько сложнее, чем двоичная, в частности, в том, что касается правил переносов в старшие разряды (заемов из старших разрядов). Главное здесь - помнить следующее равенство:
Эти переходы очень важны при выполнении сложения и вычитания шестнадцатеричных чисел.
Десятичная система счисления.
Это наиболее известная система счисления, так как она постоянно используется нами в повседневной жизни. Данная система счисления имеет следующий набор цифр: {0,1, 2, 3, 4, 5, б, 7, 8, 9}, основание степени =10. Количественный эквивалент некоторого целого n- значного десятичного числа вычисляется согласно формуле: A(10) = an-1 * 10n-1 + аn-2 * 10n-2 +... + а1 * 101 + а0 * 100.
К примеру, значение числа А(10) = 4523 = 4*103+5*102+2*101+3*100.
Перевод в десятичную систему счисления.
Этот тип перевода наиболее прост. Обычно его производят с помощью так называемого алгоритма замещения, суть которого заключается в следующем: сначала в десятичную систему счисления переводится основание степени р, а затем - цифры исходного числа. Результаты подставляются в формулу (р) = an-1 * pn-1 + аn-2 *рn-2+... + а1 * р1 + а0 * р0. Полученная сумма и будет искомым результатом.
Перевод в двоичную систему счисления
Разделить десятичное число А на 2. Запомнить частное q и остаток а. Если в результате шага 1 частное q≠0, то принять его за новое делимое и отметить остаток а, на который будет очередной значащей цифрой числа, вернуться к шагу 1, на котором в качестве делимого (десятичного числа) участвует полученное на шаге 2 частное. Если в результате шага 1 частное q =0, алгоритм прекращается. Выписать остатки в порядке, обратном их получению. Получится двоичный эквивалент исходного числа.
Перевод из двоичной системы счисления.
Идея алгоритма аналогична идее перевода из двоичной системы счисления в шестнадцатеричную. Суть в том, что двоичное число разбивается на тетрады, начиная с младшего разряда. Далее каждая тетрада приводится к соответствующему шестнадцатеричному числу
К примеру, требуется перевести число
11100101101011110101100011011000111101010101101 в шестнадцатеричную систему счисления.
Разобьем его на тетрады:
0111 0010 1101 0111 1010 1100 0110 1100 0111 1010 1010 1101. По тетрадам приводим последовательности нулей и единиц к шестнадцатеричному представлению: 72D7AC6C7AAD.
Перевод дробных чисел.
Для дробных чисел, формула записывается в следующем виде:
A(p)= an-1 * pn-1 + аn-2 * pn-2 +... + а1 * p1 + а0 * p0+ a_1 * p-1 + а_2 * p-2 +... + аm * p-m.
Переведем дробную часть десятичного числа 108.406 (10) по алгоритму, приведенному выше.
Рис. Перевод целой части десятичного числа 108.40610 в двоичную систему счисления.
Рис. Перевод дробной части числа 108.406 (10) в двоичную систему счисления
Р езультат перевода следующий: 108.406 (10) =1101100,011001111 При переводе дробного числа из десятичной системы счисления в шестнадцатеричную целесообразно предварительно перевести число в двоичную систему. Затем двоичное представление разбить на тетрады отдельно до запятой и после запятой. Разбиение на тетрады двоичных разрядов целой части производят от запятой в сторону старших разрядов. Неполную старшую тетраду дополняют слева ведущими нулями. Разряды дробной части, напротив, разбивают на тетрады от запятой вправо к младшим разрядам. Если последняя тетрада неполная, то ее дополняют справа нулями.
Ч исла со знаком.
До сих пор предполагалось, что числа положительные. А как представляются в компьютере числа со знаком?
Положительные целые со знаком - это 0 и все положительные числа. Отрицательные целые со знаком - это все числа, меньшие 0. Отличительным признаком числа со знаком является особая трактовка старшего бита поля, представляющего число. В качестве поля могут выступать байт, слово или двойное слово. Естественно, что физически этот бит ничем не отличается от других,- все зависит от команды, работающей с данным полем. Если в ее алгоритме заложена работа с целыми числами со знаком, то она будет по-особому трактовать старший бит поля. В случае если бит равен 0, число считается положительным и его значение вычисляется по правилам, которые мы рассмотрели выше. В случаи если этот бит равен 1, число считается отрицательным и предполагается, что оно записано в так называемом дополнительном коде. Разберемся в том, что он собой представляет.
Дополнительный код некоторого отрицательного числа представляет собой результат инвертирования (замены 1 на 0 и наоборот) каждого бита двоичного числа, равного по модулю исходного отрицательного числа плюс единица. К примеру, рассмотрим десятичное число - 18510. Модуль данного числа в двоичном представлении равен 101110012. Сначала нужно дополнить это значение слева нулями до нужной размерности - байта, слова и т. д. В нашем случае дополнить нужно до слова, так как диапазон представления знаковых чисел в байте составляет -128... 127. Следующее действие -получить двоичное дополнение. Для этого все разряды двоичного числа нужно инвертировать:
00000000101110012. -> 11111111010001102. Теперь прибавляем единицу:
11111111010001102+00000000000000012 =11111111010001112.
Результат преобразования равен 11111111010001112. Именно так и представляется число -18510 в компьютере.
При работе с числами со знаком от вас наверняка потребуется умение выполнять обратное действие - имея двоичное дополнение числа, определить значение его модуля. Для этого необходимо выполнить два действия:
Выполнить инвертирование битов двоичного дополнения.
К полученному двоичному числу прибавить двоичную единицу.
К примеру, определим модуль двоичного представления числа - 18510 =11111111010001112:
11111111010001112 -> инвертируем биты -> 00000000101110002. Добавляем двоичную единицу:
00000000101110002 + 00000000000000012 = 00000000101110012 = |-185|. Теперь вам должно быть понятно, откуда появилась разница в диапазонах значений для чисел со знаком и без знака простых типов данных, обсуждавшихся на уроке 2. Теперь мы почти готовы разговаривать с компьютером на его языке, состоящем из команд и данных. С данными мы уже разобрались, теперь давайте обратимся к командам.