Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Беззнаковые целые числа

Хотя в математических задачах не так часто встречаются величины, не имеющие отрицательных значений, беззнаковые типы данных получили в ЭВМ большое распространение.

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

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

Например, восьмиразрядное (1байт) число 14 будет иметь вид 0000 1110. Это же самое число в 16 - разрядном представлении будет иметь слева еще 8нулей.
   
 

Просто определить минимальное и максимальное значение чисел для N -разрядного беззнакового целого: минимальное состоит из одних нулей, а значит, при любом N равняется нулю; максимальное, напротив, образовано одними единицами и, разумеется, для разных N различно. Для вычисления максимально допустимого значения обычно используют формулу: Max = 2N - 1.

В связи с обсуждением граничных значений определенный интерес представляет проблема перехода через эти значения. Если взять самый простой, 8 - разрядный случай, то это будут действия 255 + 1 и 0 - 1. Рассмотрим их подробнее.

Для того, чтобы получить правильный результат, достаточно мысленно представить себе, что при осуществлении операции слева существует еще один дополнительный (девятый) разряд. Теперь, отбросив несуществующий дополнительный разряд, получаем несколько странный, но действительно имеющий место на практике результат: 255 + 1 = 0
 

Часто в литературе приводится еще один способ объяснения данной не очень естественной арифметики. Говорят, что при N разрядах арифметика "выполняется по модулю" 2N, т.е. при N = 8 имеем:

(255 + 1) (mod 256) = 256 (mod 256) = 0

Аналогично, хотя и чуть-чуть сложнее, можно получить результат для другого "предельного перехода" 0 - 1. Для этого придется дополнительно предполагать возможность займа из добавляемого девятого разряда. В итоге получим, что 0-1=255.

 

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

Обсуждаемая проблема выхода за отведенную разрядную сетку машины занимает важное место в реализации компьютерной арифметики и называется переполнением. Ситуация эта не совсем нормальная и для получения достоверных результатов ее следует избегать. Положение осложняется тем, что для процессора описанные результаты не являются чем-то "угрожающим", и он "спокойно" продолжает вычисления. Единственная тонкость заключается в том, что сам факт переполнения всегда фиксируется путем установки в единицу специального управляющего бита, который последующая программа имеет возможность проанализировать. Образно говоря, процессор "замечет" переполнение, но предоставляет программному обеспечению право принять решение реагировать на него или проигнорировать.

<== предыдущая лекция | следующая лекция ==>
 | Целые числа со знаком
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 2672; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.