unsigned long long
unsigned long, unsigned long long
qword
Представление знаковых целых чисел (дополнительный код)
Для представления знаковых типов данных используется дополнительный код. Такое представление данных удобно для реализации арифметических операций с целыми числами. В дополнительном коде число -1 кодируется одними единичными битами. В этом случае при увеличении числа -1 на 1, как если бы это увеличение происходило в двоичной системе счисления «в столбик», все биты обнулятся и произойдет перенос в старший разряд, который не может быть сохранен в переменной данного типа и получится число 0. Аналогично, число -2 представляется в памяти, как 11…110, и при увеличении этого числа на 1 получится число -1. Число -3 кодируется, как 11…101 и т. д. Минимальное значение, которое может быть в данном случае записано в переменной знакового типа представляется в памяти, как 100…000, оно соответствует значению \(-2^{31}\) для 32-битного типа, это — минимальное отрицательноые число, представимое в данном типе.
xor
Битовое отрицание
~
not
Битовый сдвиг влево
<<
shl
Битовый сдвиг вправо
>>
shr
Например, пусть даны два числа:
Их представления в двоичной системе счисления будут такими:
a = 00…00101
b = 00…00110
Если к каждой паре соответствующих бит применить операцию «И», то получится число, имеющее двоичное представление 00…00100, то есть число 4. Поэтому следующий код:
cout << (a & b) << endl;
выведет число 4.
Аналогично, в результате применения побитовой операции «ИЛИ» получится двоичное 00…00111, то есть 7,
cout << (a | b) << endl;
выведет число 7.
А применение операции XOR (исключающее или)
cout << (a ^ b) << endl;
даст число 3, то есть двоичное 00.k\) с отбрасыванием дробной части. Например,
cout << (a >> 1) << endl;
выведет число 3, а
cout << (a >> 2) << endl;
выведет число 1.
§13. Представление чисел в компьютере
13.1. Представление целых чисел | ||||
13.1. Представление целых чисел (продолжение) |
Самым первым видом данных, с которыми начали работать компьютеры, были числа. ЭВМ первого поколения могли производить только математические расчёты (вычисления).
Из курса информатики основной школы вы помните, что компьютеры работают с целыми и вещественными числами. Их представление в памяти осуществляется разными способами.
13.1. Представление целых чисел
Во многих задачах, решаемых на компьютере, обрабатываются целочисленные данные. Прежде всего, это задачи экономического характера, при решении которых данными служат количества акций, сотрудников, деталей, транспортных средств и др. Целые числа используются для обозначения даты и времени, для нумерации различных объектов: элементов массивов, записей в базах данных, машинных адресов и т. д. По своей природе множество целых чисел дискретно, т. к. состоит из отдельных элементов.
И хотя любое целое число можно рассматривать как вещественное, но с нулевой дробной частью, предусмотрены специальные способы представления целых чисел. Это обеспечивает: эффективное расходование памяти, повышение быстродействия, повышение точности вычислений за счёт введения операции деления нацело с остатком.
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда.
Беззнаковое представление можно использовать только для неотрицательных целых чисел.
Для получения компьютерного представления беззнакового целого числа в n-разрядной ячейке памяти достаточно перевести его в двоичную систему счисления и, при необходимости, дополнить полученный результат слева нулями до n-разрядов.
Например, десятичные числа 130 и 39 в восьмиразрядном представлении будут иметь вид:
Понятно, что существуют ограничения на числа, которые могут быть записаны в n-разрядную ячейку памяти. Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2n-1. Минимальное число соответствует n нулям, хранящимся в n разрядах памяти, и равно нулю. Далее приведены диапазоны значений для беззнаковых целых n-разрядных чисел:
При знаковом представлении целых чисел старший разряд ячейки отводится под знак (0 — для положительных, 1 — для отрицательных чисел), а остальные разряды — под цифры числа.
Представление числа в привычной для человека форме «знак-величина», при которой старший разряд ячейки отводится под знак, а остальные разряды — под цифры числа, называется прямым кодом.
Например, прямые коды чисел 48 и -52 для восьмиразрядной ячейки равны:
Минимальное отрицательное число, которое можно записать в знаковом представлении в n разрядах, равно 2n-1. Максимальное положительное число, которое можно записать в знаковом представлении в n разрядах, равно 2n-1 — 1. Ниже приведены диапазоны значений для знаковых представлений целых чисел в ячейках с различной разрядностью:
В математике множество целых чисел бесконечно.
Компьютер работает с ограниченным множеством целых чисел.
Прямой код положительного числа отличается от прямого кода равного по абсолютной величине отрицательного числа только содержимым знакового разряда.
В прямом коде числа можно хранить, но выполнение арифметических операций над числами в прямом коде затруднено — оно требует более сложной архитектуры центрального процессора, «умеющего» выполнять не только сложение, но и вычитание, а также «знающего» особый алгоритм обработки не имеющего «веса» знакового разряда. Этих трудностей позволяет избежать использование дополнительного кода.
Чтобы понять сущность дополнительного кода, рассмотрим работу реверсивного счётчика, последовательность показаний которого можно представить в виде замкнутого кольца из чисел (рис. 3.5).
Рис. 3.5. Реверсивный счётчик
Cкачать материалы урока
§ 1.2. Представление чисел в компьютере
Информатика. 8 класса. Босова Л.Л. Оглавление
Ключевые слова:
- разряд
- беззнаковое представление целых чисел
- представление целых чисел со знаком
- представление вещественных чисел
1.2.1. Представление целых чисел
Оперативная память компьютера состоит из ячеек, каждая из которых представляет собой физическую систему, состоящую из некоторого числа однородных элементов. Эти элементы обладают двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице. Каждый такой элемент служит для хранения одного из битов — разряда двоичного числа. Именно поэтому каждый элемент ячейки называют битом или разрядом (рис. 1.2).
Рис. 1.2. Ячейка памяти
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда. Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде.
Беззнаковое представление используется для таких объектов, как адреса ячеек, всевозможные счётчики (например, число символов в тексте), а также числа, обозначающие дату и время, размеры графических изображений в пикселях и т. д.
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2n-1. Минимальное число соответствует n нулям, хранящимся в n разрядах памяти, и равно нулю.
Ниже приведены максимальные значения для беззнаковых целых n-разрядных чисел:
Для получения компьютерного представления беззнакового целого числа достаточно перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Пример 1. Число 5310 = 1101012 в восьмиразрядном представлении имеет вид:
Это же число 53 в шестнадцати разрядах будет записано следующим образом:
При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное — 1. Такое представление чисел называется прямым кодом. В компьютере прямые коды используются для хранения положительных чисел в запоминающих устройствах, для выполнения операций с положительными числами.
На сайте Федерального центра информационно-образовательных ресурсов (http://fcior.edu.ru/) размещён информационный модуль «Число и его компьютерный код». С помощью этого ресурса вы можете получить дополнительную информацию по изучаемой теме.
Для выполнения операций с отрицательными числами используется дополнительный код, позволяющий заменить операцию вычитания сложением. Узнать алгоритм образования дополнительного кода вы можете с помощью информационного модуля «Дополнительный код», размещённого на сайте Федерального центра информационно-образовательных ресурсов (http://fcior.edu.ru/).
1.2.2. Представление вещественных чисел
Любое вещественное число А может быть записано в экспоненциальной форме:
где:
- m — мантисса числа;
- q — основание системы счисления;
- р — порядок числа.
Например, число 472 000 000 может быть представлено так: 4,72 • 108, 47,2 • 107, 472,0 • 106 и т. д.
С экспоненциальной формой записи чисел вы могли встречаться при выполнении вычислений с помощью калькулятора, когда в качестве ответа получали записи следующего вида: 4.72Е+8.
Здесь знак «Е» обозначает основание десятичной системы счисления и читается как «умножить на десять в степени».
Из приведённого выше примера видно, что положение запятой в записи числа может изменяться.
Для единообразия мантиссу обычно записывают как правильную дробь, имеющую после запятой цифру, отличную от нуля. В этом случае число 472 000 000 будет представлено как 0,472 • 109.
Вещественное число может занимать в памяти компьютера 32 или 64 разряда. При этом выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.
Пример:
Диапазон представления вещественных чисел определяется количеством разрядов, отведённых для хранения порядка числа, а точность определяется количеством разрядов, отведённых для хранения мантиссы.
Максимальное значение порядка числа для приведённого выше примера составляет 11111112 = 12710, и, следовательно, максимальное значение числа:
- 0,11111111111111111111111 • 101111111
Попытайтесь самостоятельно выяснить, каков десятичный эквивалент этой величины.
Широкий диапазон представления вещественных чисел важен для решения научных и инженерных задач. Вместе с тем следует понимать, что алгоритмы обработки таких чисел более трудоёмки по сравнению с алгоритмами обработки целых чисел.
Самое главное о представление чисел в компьютере
Для компьютерного представления целых чисел используются несколько различных способов, отличающихся друг от друга количеством разрядов (8, 16, 32 или 64) и наличием или отсутствием знакового разряда. Для представления беззнакового целого числа его следует перевести в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности. При представлении со знаком самый старший разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное, то 1. Положительные числа хранятся в компьютере в прямом коде, отрицательные — в дополнительном. Вещественные числа в компьютере хранятся в формате с плавающей запятой. При этом любое число записывается так:
А = ±m • qP,
где:
- m — мантисса числа;
- q — основание системы счисления;
- р — порядок числа.
Вопросы и задания
1. Ознакомьтесь с материалами презентации к параграфу содержащейся в электронном приложении к учебнику. Используйте эти подготовке ответов на вопросы и выполнении заданий.
2. Как в памяти компьютера представляются целые положительные и отрицательные числа.
3. Любое целое число можно рассматривать как вещественное, но с нулевой дробной частью. Обоснуйте целесообразность наличия особых способов компьютерного представления целых чисел
4. Представьте число 6310 в без знаковом 8-разрядном формате.
5. Найдите десятичные эквиваленты чисел по их прямым кодам записанный в 8 разрядном формате со знаком: А)01001100 Б)00010101
6. Какие из чисел 4438, 1010102, 25610 можно сохранить в 8-разрядном формате?
7. Запишите следующие числа в естественной форме: а) 0,3800456 · 102; б) 0,245 · 10?3; в) 1,256900Е+5; г) 9,569120Е-3.
8. Запишите число 2010 0102 пятью различными способами в экспоненциальной форме
9. Запишите следующие числа в экспоненциальной форме с нормализованной мантиссой правильной дробью, имеющей после запятой цифру отличную от нуля
10. Изобразите схему связывающую основные понятия рассмотренные, а данном параграфе
Оглавление
§ 1.1. Системы счисления
§ 1.2. Представление чисел в компьютере
§ 1.3. Элементы алгебры логики
Беззнаковое и знаковое представление целых чисел
Задания, которые решаются с использованием компьютера, требуют обработки целочисленной информации. Как правило, это экономические проблемы, в процессе разрешения которых в качестве информации выступают количество акций, работников, частей, транспорта и прочее.
Целые числа применяются для изображения дат и времени, для нумерации разнообразных объектов, таких как элементы массива, записи в базах данных, машинные адреса и так далее. По собственной сути множество целых чисел называют дискретным, ведь оно содержит в себе обособленные составляющие.
Всякое целое число принимается в качестве вещественного, но с пустой дробной составляющей, однако есть и другие методы описания целых чисел. Следовательно, обеспечивается результативное применение памяти, повышение скорости и корректности расчётов по причине применения процедуры деления нацело с остатком.
Для компьютерного описания целых чисел применяется много разных методов, которые различаются числом разрядов, где для целых чисел определяется 8, 16, 32 или 64 разрядов, и присутствием или отсутствием знакового разряда.
Беззнаковое представление
Беззнаковое представление применяется лишь для неотрицательных целых чисел.
Чтобы выявить компьютерное описание беззнакового целого числа в n-разрядной ячейке памяти, нужно преобразовать его в 2-ичную систему и по надобности добавить к результату слева нули, пока не получится n разрядов.
К примеру, десятичные числа 130 и 39 в 8-разрядном описании представляются так:
Очевидно наличие ограничений на числа, записываемых в n-разрядную ячейку памяти. Наибольшее значение целого неотрицательного числа получается тогда, когда во всех разрядах ячейки находятся единицы. Для n-разрядного описания это 2n – 1. Наименьшее число ставится в соответствие n нулям, которые хранятся в n разрядах памяти, оно равняется 0.
В таблице описаны диапазоны значений для беззнаковых целых n-разрядных чисел:
Знаковое представление и прямой код
При знаковом описании целых чисел старший разряд ячейки определяется под знак, где 0 — для положительных, а 1 — для отрицательных чисел, а прочие разряды — под цифры числа.
Описание числа в понимаемом для любого человека виде «знак-величина», где старший разряд ячейки выделяется под знак, а прочие разряды — под цифры числа, именуется прямым кодом.
К примеру, прямые коды чисел 48 и -52 в 8-разрядной ячейке выглядят так:
Наименьшее отрицательное число, которое описывается в знаковом представлении в n разрядах, равняется 2n-1. Наибольшее неотрицательное число, формируемое в знаковом представлении в n разрядах, равняется 2n-1 – 1. В таблице описаны диапазоны значений для знаковых представлений целых чисел в ячейках с разной разрядностью:
В математических науках числовое множество не имеет конца. При этом компьютер осуществляет работу с конечным множеством целых чисел.
Разница между прямым кодом неотрицательного числа и прямым кодом равного по абсолютной величине отрицательного числа исключительно в наполнении знакового разряда.
Прямой код способен сохранять числа, однако осуществлять арифметические процедуры над числами достаточно сложно, так как для этого необходима усложнённая структура центрального процессора, который смог бы исполнять не только суммирование, но и вычитание, а также обучаться специальным методам идентификации знакового разряда, не характеризующегося весом. Все эти проблемы решаются применением дополнительного кода.
Дополнительный код
Для наиболее понятной иллюстрации сути дополнительного кода принимается к рассмотрению функционирование реверсивного счётчика, последовательность значений которого представляется в формате замкнутого кольца из чисел.
Если значения счётчика будут возрастать до максимального, к примеру, до 999, то последующими его значениями будут 1000, 1001, 1002 и так далее. Тем не менее, для отображения старшей единицы в счётчике недостаёт разряда, отчего осуществляется излишнее наполнение разрядной сетки. Потому пользователь заметит 000, 001, 002 и так далее.
В случае уменьшения значений счётчика после значения 000 будут отображаться 999, 998, 997 и так далее. Но после того, как будет достигнут ноль, поэтапное вычитание единицы должно обеспечивать такие результаты: -1, -2, -3 и другие.
Выполним представление чисел 999, 998 и 997 в качестве кодов чисел -1, -2 и -3 и осуществим проверку на их примере равенства y + (-y) = 0:
001 + 999 = 1000;
002 + 998 = 1000;
003 + 997 = 1000.
Учитывая то, что единица переполнения исчезает, тогда, просуммировав число и код противоположного ему числа, возникает ноль. Далее представлены ещё некоторые примеры:
5 – 2 = 2 + [-2] = 5 + 998 = 1003;
7 – 5 = 7 + [-5] = 7 + 995 = 1002.
Для того чтобы устранить неоднозначность в кольце, следует половину состояний (от нуля до 499) оценивать в качестве кодов нулей и положительных чисел, а другую половину (от 500 до 999) — в качестве кодов отрицательных чисел.
В итоге дополнительный код неотрицательного числа совпадает с таким числом, а для отрицательного числа он равняется дополнению его значения до числа qn, появляющегося при переполнении разрядной сетки. В этом случае q называется основанием системы счисления, а n — количеством разрядов в разрядной сетке.
Изучим метод формирования дополнительного n-разрядного кода отрицательного числа:
- Число по модулю описывается прямым кодом в n 2-ичных разрядах;
- Значения разрядов инвертируются, следовательно, вместо нулей пишут единицы, а вместо единиц нули;
- К выявленному описанию, которое описывается как n-разрядное неотрицательное 2-ичное число, прибавляется единица.
Пример 1
Требуется сформировать 16-разрядный дополнительный код отрицательного числа -201810.
Прямой код |-201810| = 201810 | 00000111111000102 |
Инвертирование | 11111000000111012 |
Добавление единицы | + 1 |
Дополнительный код | 11111000000111102 |
Использование дополнительного кода обеспечивает сведение процедуры вычитания чисел к процедуре поразрядного сложения кодов таких чисел.
Пример 2
Ясно, что 49 – 2017 = -1966.
Осуществим эту процедуру в 16-разрядных машинных кодах. Понадобится прямой код числа 49 и дополнительный код числа -2017.
Прямой код числа 49 | 00000000001100012 |
Дополнительный код числа -2017 | 11111000000111112 |
Поразрядное суммирование кодов | 11111000010100002 |
В итоге формируется отрицательное число, это можно понять по единице в знаковом разряде. Оно представлено в дополнительном коде. Если перейти к прямому коду модуля текущего числа, то по нему можно построить 10-ичную форму результата.
Прямой код возможно сформировать из дополнительного кода, если применить к нему процедуру инвертирования, а затем добавить единицу.
Инвертирование | 00000111101011112 |
Добавление единицы | + 1 |
Прямой код модуля результата | 00000111101100002 |
В итоге: -111101100002 = -1966.
Беззнаковое представление может быть использовано для объекта
Ключевые слова:
• разряд
• беззнаковое представление целых чисел
• представление целых чисел со знаком
• представление вещественных чисел
1.2.1. Представление целых чисел
Оперативная память компьютера состоит из ячеек, каждая из которых представляет собой физическую систему, состоящую из некоторого числа однородных элементов. Эти элементы обладают двумя устойчивыми состояниями, одно из которых соответствует нулю, а другое — единице. Каждый такой элемент служит для хранения одного из битов — разряда двоичного числа. Именно поэтому каждый элемент ячейки называют битом или разрядом (рис. 1.2).
Рис. 1.2. Ячейка памяти
Для компьютерного представления целых чисел используется несколько различных способов, отличающихся друг от друга количеством разрядов (под целые числа обычно отводится 8, 16, 32 или 64 разряда) и наличием или отсутствием знакового разряда. Беззнаковое представление можно использовать только для неотрицательных целых чисел, отрицательные числа представляются только в знаковом виде.
Беззнаковое представление используется для таких объектов, как адреса ячеек, всевозможные счётчики (например, число символов в тексте), а также числа, обозначающие дату и время, размеры графических изображений в пикселях и т. д.
Максимальное значение целого неотрицательного числа достигается в случае, когда во всех разрядах ячейки хранятся единицы. Для n-разрядного представления оно будет равно 2 n -1. Минимальное число соответствует п нулям, хранящимся в n разрядах памяти, и равно нулю.
Ниже приведены максимальные значения для беззнаковых целых n-разрядных чисел:
Для получения компьютерного представления беззнакового целого числа достаточно перевести число в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
Пример 1. Число 5310 = 1101012 в восьмиразрядном представлении имеет вид:
Это же число 53 в шестнадцати разрядах будет записано следующим образом:
При представлении со знаком самый старший (левый) разряд отводится под знак числа, остальные разряды — под само число. Если число положительное, то в знаковый разряд помещается 0, если число отрицательное — 1. Такое представление чисел называется прямым кодом.
В компьютере прямые коды используются для хранения положительных чисел в запоминающих устройствах, для выполнения операций с положительными числами.
На сайте Федерального центра информационно-образовательных ресурсов (http://fcior.edu.ru/) размещён информационный модуль «Число и его компьютерный код». С помощью этого ресурса вы можете получить дополнительную информацию по изучаемой теме.
Для выполнения операций с отрицательными числами используется дополнительный код, позволяющий заменить операцию вычитания сложением. Узнать алгоритм образования дополнительного кода вы можете с помощью информационного модуля «Дополнительный код», размещённого на сайте Федерального центра информационно-образовательных ресурсов (http://fcior.edu.ru/).
1.2.2. Представление вещественных чисел
Любое вещественное число А может быть записано в экспоненциальной форме:
где:
m — мантисса числа;
q — основание системы счисления;
p — порядок числа.
Например, число 472 ООО ООО может быть представлено так: 4,72 • 10 8 , 47,2 • 10 7 , 472,0 • 10 6 и т. д.
С экспоненциальной формой записи чисел вы могли встречаться при выполнении вычислений с помощью калькулятора, когда в качестве ответа получали записи следующего вида: 4.72Е+8.
Здесь знак «Е» обозначает основание десятичной системы счисления и читается как «умножить на десять в степени».
Из приведённого выше примера видно, что положение запятой в записи числа может изменяться.
Для единообразия мантиссу обычно записывают как правильную дробь, имеющую после запятой цифру, отличную от нуля. В этом случае число 472 ООО ООО будет представлено как 0,472 • 10 9 .
Вещественное число может занимать в памяти компьютера 32 или 64 разряда. При этом выделяются разряды для хранения знака мантиссы, знака порядка, порядка и мантиссы.
Пример:
Диапазон представления вещественных чисел определяется количеством разрядов, отведённых для хранения порядка числа, а точность определяется количеством разрядов, отведённых для хранения мантиссы.
Максимальное значение порядка числа для приведённого выше примера составляет 11111112 = 12710, и, следовательно, максимальное значение числа:
0,11111111111111111111111 • 10 1111111
Попытайтесь самостоятельно выяснить, каков десятичный эквивалент этой величины.
Широкий диапазон представления вещественных чисел важен для решения научных и инженерных задач. Вместе с тем следует понимать, что алгоритмы обработки таких чисел более трудоёмки по сравнению с алгоритмами обработки целых чисел.
САМОЕ ГЛАВНОЕ
Для компьютерного представления целых чисел используются несколько различных способов, отличающихся друг от друга количеством разрядов (8, 16, 32 или 64) и наличием или отсутствием знакового разряда.
Для представления беззнакового целого числа его следует перевести в двоичную систему счисления и дополнить полученный результат слева нулями до стандартной разрядности.
При представлении со знаком самый старший разряд отводится под знак числа, остальные разряды — под само число. Бели число положительное, то в знаковый разряд помещается 0, если число отрицательное, то 1. Положительные числа хранятся в компьютере в прямом коде, отрицательные — в дополнительном.
При хранении в компьютере вещественных чисел выделяются разряды на хранение знака порядка числа, самого порядка, знака мантиссы и мантиссы. При этом любое число записывается так:
где:
m — мантисса числа;
q — основание системы счисления;
p — порядок числа.
Вопросы и задания
1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.
2. Как в памяти компьютера представляются целые положительные и отрицательные числа?
3. Любое целое число можно рассматривать как вещественное, но с нулевой дробной частью. Обоснуйте целесообразность наличия особых способов компьютерного представления целых чисел.
4. Представьте число 6310 в беззнаковом 8-разрядном формате.
5. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком:
а) 01001100;
б) 00010101.
6. Какие из чисел 4438, 1010102, 25610 можно сохранить в 8-разрядном формате?
7. Запишите следующие числа в естественной форме:
а) 0,3800456 • 10 2 ;
б) 0,245 • 10 -3 ;
в) 1,256900Е+5;
г) 9,569120Е-3.
8. Запишите число 2010,010210 пятью различными способами в экспоненциальной форме.
9. Запишите следующие числа в экспоненциальной форме с нормализованной мантиссой — правильной дробью, имеющей после запятой цифру, отличную от нуля:
10. Изобразите схему, связывающую основные понятия, рассмотренные в данном параграфе.
Электронное приложение к уроку
Презентации, плакаты, текстовые файлы | Вернуться к материалам урока | Ресурсы ЭОР |
Cкачать материалы урока
1) адрес ячейки
2) температура в холодное время года
3) положительное число
4) счетчик количества символов в слове
2. Десятичный эквивалент числа 10010001, записанного
в прямом коде, 8-разрядном формате со знаком:
1) 17
2) -17
3) 145
4) -145
3. В 8-разрядном формате не может быть сохранено число:
1) 28010
2) 10112
3) 3468
4) 4516
4. Положительное число, записанное в 8-разрядном прямом коде
1) 11111001
2) 00010000
3) 11110110
4) 10000001
5. Представление числа 5438,9 в экспоненциальной форме с нормализованной мантиссой:
1) 5,4389 · 103
2) 0,54389Е+04
3) 543,89Е01
4) 0,0543893Е+05
6. Естественная форма записи числа 0,345Е+04:
1) 3450
2) 3,45 · 103
3) 0,345 · 104
4) 345
7. Впишите пропущенные слова.
Положительные числа хранятся в компьютере в ___________ коде, отрицательные — в __________ коде.
§1.2 ПРЕДСТАВЛЕНИЕ ЧИСЕЛ В КОМПЬЮТЕРЕ
1.2.1. ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ЧИСЕЛ
1.2.2. ПРЕДСТАВЛЕНИЕ ВЕЩЕСТВЕННЫХ ЧИСЕЛ
1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.
2. Как в памяти компьютера представляются целые положительные и отрицательные числа?
3. Любое целое число можно рассматривать как вещественное, но с нулевой дробной частью. Обоснуйте целесообразность наличия особых способов компьютерного представления целых чисел.
4. Представьте число 6310 в беззнаковом 8-разрядном формате.
00111111.
5. Найдите десятичные эквиваленты чисел по их прямым кодам, записанным в 8-разрядном формате со знаком:
А) 01001100;
Б) 00010101.
А) +76. Б) +45.
6. Какие из чисел 4438 , 1010102 , 25610 можно сохранить в 8-разрядном формате?
4438 = 1001000112 – нельзя.
1010102 – можно.
25610 = 1000000002 – нельзя.
7. Запишите следующие числа в естественной форме:
А) 0,3800456·102 ;
Б) 0,245 ·10-3 ;
А) 1,256900Е+5;
Б) 9,569120Е-3.
8. Запишите число 2010, 010210 пятью различными способами в экспоненциальной форме.
9. Запишите следующие числа в экспоненциальной форме с нормализованной мантиссой – правильной дробью, имеющей после запятой цифру, отличную от нуля:
А) 217, 93410 ;
Б) 7532110;
В) 0,0010110.
А) 0,217934·103
Б) 0,75321·105
В) 0,101·10-2
10. Изобразите схему, связывающую основные понятия, рассмотренные в данном параграфе.
3.1.1. Аппаратное представление целых чисел. О чём не пишут в книгах по Delphi
3.1.1. Аппаратное представление целых чисел
Delphi относится к языкам, в которых целые типы данных максимально приближены к аппаратной реализации целых чисел процессором. Это позволяет выполнять операции с целочисленными данными максимально быстро, но заставляет программиста учитывать аппаратные ограничения.
Примечание
Такая реализация целых чисел может также приводить к проблемам при переносе языка на другую аппаратную платформу, но для Delphi это, видимо, не очень актуально.
Целые числа могут быть знаковыми и беззнаковыми. Сначала рассмотрим формат более простых беззнаковых чисел. Если у нас есть N двоичных разрядов для хранения такого числа, то мы можем представить любое число от 0 до 2N-1. В Delphi беззнаковые целые представлены фундаментальными типами Byte (N=8, диапазон 0..255), Word (N=16, диапазон 0..65 535) и LongWord (N=32, диапазон 0..4 294 967 295).
Примечание
Фундаментальными называются те типы данных, разрядность которых не зависит от аппаратной платформы. Кроме них существуют еще общие (generic) типы, разрядность которых определяется разрядностью платформы. В Delphi это типы Integer (знаковое целое) и Cardinal (беззнаковое целое. В имеющейся реализации они имеют 32 разряда, но при переходе на 64-разрядные компиляторы следует ожидать что эти типы также станут 64-разрядными. В частности, в 16-разрядном Turbo Pascal тип Integer был 16-разрядным а типа Cardinal там не было).
Знаковые числа устроены несколько сложнее. Старший из N бит, отводящихся на такое число, служит для хранения знака (этот бит называется знаковым). Если этот бит равен нулю, число считается положительным, а оставшиеся N-1 разрядов используются для хранения числа так же, как в случае беззнакового целого (эти разряды мы будем называть беззнаковой частью). В этом случае знаковое число ничем не отличается от беззнакового. Отрицательные значения кодируются несколько сложнее. Когда все разряды (включая знаковый бит) равны единице, это соответствует значению -1. Рассмотрим это на примере однобайтного знакового числа. Числу -1 в данном случае соответствует комбинация 1 1111111 (знаковый бит мы будем отделять от остальных пробелом), т. е. беззнаковая часть числа содержит максимально возможное значение -127. Числу -2 соответствует комбинация 1 1111110, т. е. в беззнаковой части содержится 126. В общем случае отрицательное число, хранящееся в N разрядах равно X-2N-1, где X — положительное число, хранящееся в беззнаковой части. Таким образом, N разрядов позволяют представить знаковое целое в диапазоне -2N-1..2N-1-1, причем значению -2N-1 соответствует ситуация, когда все биты, кроме знакового равны нулю.
Такая на первый взгляд не очень удобная система позволяет унифицировать операции для знаковых и беззнаковых чисел. Для примера рассмотрим число 11111110. Если его рассматривать как беззнаковое, оно равно 254, если как знаковое, то -2. Вычитая из него, например, 3, мы должны получить 251 и -5 соответственно. Как нетрудно убедиться, в беззнаковой форме 251 — это 11111011. И число -5 в знаковой форме — это тоже 11111011, т. е. результирующее состояние разрядов зависит только от начального состояния этих разрядов и вычитаемого числа и не зависит от того, знаковое или беззнаковое число представляют эти разряды. И это утверждение справедливо не только для выбранных чисел, но и вообще для любых чисел, если ни они, ни результат операции не выходят за пределы допустимого диапазона. То же самое верно для операции сложения. Поэтому в системе команд процессора нет отдельно команд знакового и беззнакового сложения и вычитания — форматы чисел таковы, что можно обойтись одной парой команд (для умножения и деления это неверно, поэтому существуют отдельно команды знакового и беззнакового умножения и деления).
Ранее мы специально оговорили, что такое удобное правило действует только до тех пор, пока аргументы и результат остаются в рамках допустимого диапазона. Рассмотрим, что произойдет, если мы выйдем за его пределы. Пусть в беззнаковой записи нам нужно из 130 вычесть 10. 130 — это 10000010, после вычитания получим 01111000 (120). Но если попытаться интерпретировать эти двоичные значения как знаковые числа, получится, что из -126 мы вычитаем 10 и получаем 120. Такими парадоксальными результатами приходится расплачиваться за унификацию операций со знаковыми и беззнаковыми числами.
Рассмотрим другой пример: из пяти (в двоичном представлении 00000101) вычесть десять (00001010). Здесь уместно вспомнить вычитание в столбик, которое изучается в школе: если в разряде уменьшаемого стоит цифра, большая, чем в соответствующем разряде вычитаемого, то из старшего разряда уменьшаемого приходится занимать единицу. То же самое и здесь: чтобы вычесть большее число из меньшего, как бы занимается единица из несуществующего девятого разряда. Это можно представить так: из числа (1)00000101 вычитается (0)00001010 и получается (0)11111011 (несуществующий девятый разряд показан в скобках: после получения результата мы про него снова забываем). Если интерпретировать полученный результат как знаковое целое, то он равен -5, т. е. именно тому, что и должно быть. Но с точки зрения беззнаковой арифметики получается, что 5-10=251.
Приведенные примеры демонстрировали ситуации, когда результат укладывался в один из диапазонов (знаковый или беззнаковый), но не укладывался в другой. Рассмотрим, что будет, если результат не попадает ни в тот, ни в другой диапазон. Пусть нам нужно сложить 10000000 и 10000000. При таком сложении снова появляется несуществующий девятый разряд, но на этот раз из него единица не занимается, а в него переносится лишняя. Получается (1)00000000. Несуществующий разряд потом игнорируется. С точки зрения знаковой интерпретации получается, что 128 + 128 = 0. С точки зрения беззнаковой — что -128 + (-128) = 0, т. е. оба результата, как и можно было ожидать с самого начала, оказываются некорректными.
Знаковые целые представлены в Delphi типами ShortInt (N=8, диапазон -128..127), SmallInt (N=16, диапазон -32 768..32 767), LongInt (N=32, диапазон -2 147 483 648..2 147 483 647) и Int64 (N=64, диапазон -9 223 372 036 854 775 808..9 223 372 036 854 775 807).
Примечание
32-разрядные процессоры не могут выполнять операции непосредственно с 64-разрядными числами, поэтому компилятор генерирует код, который обрабатывает это число по частям. Сначала операция сложения или вычитания выполняется над младшими 32-мя разрядами а потом — над старшими 32-мя, причем, если в первой операции занималась единица из несуществующего (в рамках данной операции) 33-го разряда или единица переносилась в него, при второй операции эта единица учитывается.
Далее приведены несколько примеров, иллюстрирующих сказанное.
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРесБеззнаковое представление формата с фиксированной точкой
Стр 1 из 3Следующая ⇒РЕФЕРАТ
Представление числовой информации в компьютере
ОГУ 10.05.01 5415 — Р
Руководитель
Канд. техн. наук, ст. пр.
________ Н.С. Надточий
«___»_________20___г.
.
Исполнитель
студент группы 15КБ(с)РЗПО
__________В.М. Сыроватко
«__»______20__г.
Оренбург 2015
Оглавление
1. Введение. 2
2. Форматы целых чисел. 3
2.1. Беззнаковое представление формата с фиксированной точкой. 3
2.1.1. Получение беззнакового кода целого числа. 4
2.1.2. Определение значения числа по его беззнаковому коду. 5
2.2. Знаковое представление формата с фиксированной точкой. 6
2.2.1. Способы получения дополнительных кодов целых чисел. 11
2.2.2. Получение знакового кода заданного числа. 13
Введение
Напомним, что исчерпывающе полный набор правил кодирования той или иной разновидности информации в компьютере принято называть форматом данных. Для представления числовых данных в компьютерах используются два принципиально разных формата: формат с фиксированной точкой(запятой) и формат с плавающей точкой(запятой).
В названиях форматов речь идет о знаке, с помощью которого целая часть числа отделяется от его дробной части. В обычной практике записи чисел для этого используется запятая, а в программировании целая часть числа отделяется от дробной точкой. Поэтому в литературе в зависимости от предпочтений авторов используется как термин «фиксированная точка», так и термин «фиксированная запятая». Это же относится и ко второму формату.
Формат с фиксированной точкой предназначен для абсолютно точного представления целых чисел. В программировании эти числа относятся к целому типу, в то время как формат с плавающей точкой используется для представления только нецелых, приближенных чисел. В программировании такие числа относятся к вещественному типу. Напомним, что вещественные числа возникают в задачах в результате различных измерений (например, измерений веса тела или его длины), которые, как известно, всегда выполняются с некоторой погрешностью, приближенно.
Как выяснится немного позже, возможности одного байта для кодирования чисел довольно малы, поэтому числа обычно занимают несколько соседних байтов, то есть поле, длина которого зависит от используемого формата.
Форматы целых чисел
Существуют две модификации формата с фиксированной точкой, которые принято называть его беззнаковым и знаковым представлениями.Беззнаковое представление формата используется для работы с целыми неотрицательными числами, а существующее в нескольких вариантах знаковое — для работы как с положительными, так и с отрицательными целыми числами.
1.
2.
2.
Беззнаковое представление формата с фиксированной точкой
1.
2.
3.
В беззнаковом представлении целого числа используется прямой двоичный код, который представляет собой запись этого числа в двоичной системе счисления. При этом все разряды занятого числом поля содержат его значащие цифры. Точка, отделяющая целую часть числа от дробной, считается расположенной, фиксированной справа от крайнего правого разряда. Следовательно, под дробную часть числа отводится нулевое количество разрядов, и в данном варианте кодировки возможна работа только с целыми числами. Постоянное расположение, фиксация позиции точки дала название формату — с фиксированной точкой.
Пусть N — длина используемого поля в битах, тогда в нем может быть записано N-разрядное двоичное число, и, следовательно, могут быть представлены любые целые числа из диапазона [0;2ᴺ-1].
Для кодирования чисел в формате с фиксированной точкой используются поля длиной 1, 2 или 4 байта, поэтому N может быть равно 8, 16 или 32. В табл. 2.3 приведены обычно используемые в программировании названия соответствующих этим полям целых типов и диапазоны их возможных значений.
Таблица 2.3.Диапазоны представления беззнаковых целых чисел
Название | Длина, байт | Длина диапазона | |
byte, unsigned char | 0…2⁸-1 | 0…255 | |
word, unsigned int | 0…2¹⁶-1 | 0…65 535 | |
unsigned long | 0…2³²-1 | 0…4 294 967 295 |
На практике иногда возникают задачи определения машинного кода заданного числа, а также определения числа по его коду. При использовании беззнакового представления формата с фиксированной точкой эти задачи решаются довольно просто.
1.
2.
2.1.
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
Разница между подписанным и беззнаковым (с таблицей) – спросите любую разницу
Флаговые знаки используются категорией представления со знаком для обозначения отрицательных целых чисел. Категории данных без знака не используют такие знаки, поскольку они могут включать только ноль и все остальные положительные значения. Различие между «подписанным» и «неподписанным» важно для правильной работы компьютерного приложения.
Знаковые и беззнаковые
Основное различие между знаковыми и беззнаковыми категориями данных заключается в том, что знаковые включают как положительные, так и отрицательные целые числа, а беззнаковые включают только положительные целые числа.
В компьютерном программировании эти категории «со знаком» и «без знака» относятся к переменным, которые могут содержать определенные типы целых чисел. В контексте кодирования первая категория может содержать оба типа целых чисел, тогда как последняя категория может включать только число ноль и весь список положительных целых чисел.