![]() Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Целочисленное переполнение.
Целочисленное переполнение происходит когда мы пытаемся записать в переменную значение, большее максимального значения типа этой переменной. (Пример для понимания сути происходящего) Обьявим две переменные A и B, типа UnsignedInteger. Далее занесем в А максимальное значение UnsignedInteger - 4294967295, а в В -1: unsignedint A=0xFFFFFFFF; unsignedint B=0x1; В результате выполнения операции (А+В) полученное значение, согласно стандарту ISO, не вмещается в 32 бита. В таком случае результатом будет (А+В) mod 0x100000000. mod - остаток от деления, например (8 mod 2 =0), а (8 mod 3=2). Следовательно, наш результат будет равен выражению:
result=(A+B) % 0x100000000; подставив наши значения получим следующее: result=(0xffffffff + 0x1) % 0x100000000; //result=(0x100000000) % 0x100000000; //result=0; Как видно результат вышел равен нулю. Не совсем то, что должно было выйти :) Этот эффект называют "wraparound", тоесть вращение вокруг нуля.
Билет №4.Особенности представления информации в компьютере. Представление вещественных чисел. Нормализованная запись числа. Формат с плавающей запятой. Мантисса и порядок. Выполнение операций над числами в формате с плавающей запятой. Потеря точности. Переполнение чисел с плавающей запятой. Вещественные числа обычно представляются в виде чисел с плавающей запятой. Числа с плавающей запятой — один из возможных способов представления действительных чисел, который является компромиссом между точностью и диапазоном принимаемых значений, его можно считать аналогом экспоненциальной записи чисел, но только в памяти компьютера. Число с плавающей запятой (или число с плавающей точкой) — форма представления вещественных (действительных) чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. В нормализованной записи числа мантисса десятичного числа принимает значения от 1 (включительно) до 10 (не включительно), а мантисса двоичного числа принимает значения от 1 (включительно) до 2 (не включительно). В такой форме любое число (кроме 0) записывается единственным образом. Недостаток заключается в том, что в таком виде невозможно представить 0, поэтому представление чисел в информатике предусматривает специальный признак (бит) для числа 0. Число с плавающей запятой состоит из набора отдельных двоичных разрядов, условно разделенных на так называемые знак (понятно, что такое), порядок и мантиссу. Число, записанное в стандартной форме, имеет вид Число m называется мантиссой числа, записанного в стандартной форме. Число n является целым числом (положительным, отрицательным или нулем) называется порядком числа, записанного в стандартной форме.В компьютерной записи вещественных чисел с плавающей запятой количество цифр, отводимых под запись порядка, определяет, насколько большие и насколько маленькие положительные числа могут быть представлены. Например, число 3251 в стандартной форме записывается так: Здесь число 3,251 является мантиссой, а число 3 является порядком. Для чисел с плавающей запятой выполняются операции сложения, вычитания, деления и умножения. Потеря точности: Самая опасная операция с точки зрения округления в арифметике с плавающей запятой — это вычитание. При вычитании близких чисел значимые разряды могут потеряться, что может в разы увеличить относительную погрешность. Неассоциативность арифметических операций. В арифметике с плавающей запятой правило (a*b)*c = a*(b*c) не выполняется для любых арифметических операций. Например, (1020+1)-1020=0 ≠ (1020-1020)+1=1 Не все десятичные числа имеют двоичное представление с плавающей запятой. Например, число «0,2» будет представлено как «0,200000003» в одинарной точности. Соответственно, «0,2 + 0,2 ≈ 0,4». Абсолютная погрешность в отдельном случае может и не высока, но если использовать такую константу в цикле, можем получить накопленную погрешность. Ошибки при проверке на равенство.
Переполнение. Для чисел с плавающей запятой определены несколько специальных значений, которые весьма непривычны для программистов, привыкших к целочисленным операциям. Так, если взять самое большое целое число и прибавить к нему единицу, произойдёт переполнение, и число станет отрицательным. Если же прибавить единицу к самому большому числу с плавающей запятой, то не произойдёт ровным счётом ничего; в результате мы получим то же самое число. Это явление объясняется ниже. Переполнения можно добиться, к примеру, умножив это число на два. Но результат будет несколько необычным — "число" Inf (от англ. infinity = бесконечность). Аналогичным образом можно получить отрицательную бесконечность — -Inf.
Билет №5. Особенности представления информации в компьютере. Представление текстовой информации. Кодировка ASCII. Национальные однобайтовые кодировки. Особенности кодировок cp866, cp1251 и koi8-r. Кодировки Unicode. Кодировка UTF-8 как пример кодировки переменной длины.
На сегодняшнее время компьютеры способны обрабатывать числовую, текстовую, графическую, звуковую и видео информацию. Однако большинство существующих компьютеров способно хранить и обрабатывать только дискретную информацию. Следовательно, любой вид информации, подлежащий к обработке на ЭВМ необходимо закодировать в числовом виде. Для кириллицы существовало несколько отображений символов на эту вторую часть таблицы, наиболее известными из которых были KOI-8, Windows 1251, cp866, ISO 8859-5 Кодировка Unicode представляет собой схему кодировки символов, которая позволяет кодировать практически все алфавиты в виде одного набора символов. Кодировка Unicode позволяет компьютерам представлять текст для большинства систем письма в мире и обращаться с ним. Разработка кодировки Unicode поддерживается организацией UnicodeConsortium и кодифицируется как стандарт. Проще говоря, кодировка Unicode представляет собой систему, позволяющую каждому использовать любые другие алфавиты. Представьте себе, существует даже версия Unicodeклингонского языка. Кодировка UTF-8 Использование большой кодовой таблицы ставит перед нами очень неприятную проблему. Поскольку номера символов из таблицы UCS-4 требуют четырёх байт, текст, закодированный таким образом, становится в 4 раза длиннее. Это плата за большой выбор используемых символов. Это очень расточительно, но по-другому не получится, если кодировать каждый символ одним и тем же количеством байтов. Есть и другая возможность, но она предполагает отказ от фиксированной длины символов (измеренной в байтах). Это кодировки с переменной длиной символа. Большое распространение получила кодировка UTF-8. для того, чтобы дать полное и точное изложение того, что представляет собой код Unicode и как он работает; ее предназначение - объяснить, как использовать кодировку Unicode в Delphi 2009. В данной статье, первой из трех, будет объяснено, почему так важна кодировка Unicode, и как в Delphi будет реализован новый тип строки UnicodeString. Билет №6. Алгебра логики. Понятие высказывания. Основные логические операции и их таблицы истинности. Формальное решение логических задач. |
||
Последнее изменение этой страницы: 2018-04-11; просмотров: 698. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |