Главная » Просмотр файлов » ДС20в02-представление-целых

ДС20в02-представление-целых (1238923), страница 2

Файл №1238923 ДС20в02-представление-целых (Лекции Северов Часть 1) 2 страницаДС20в02-представление-целых (1238923) страница 22020-10-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

коде визуальноПереполнениеотрицательными¢ЗначенияTAdd4(u , v)§ 4-ре бита в доп. коде§ Диапазон от -8 до +7¢Отсечение§ Если сумма ≥2w–1Результатотрицательный§ Не более 1 раза§ Если сумма < –2w–1§ Результатположительный§ Не более 1 раза§864206-242-40-6-2-8-8-4-6-4u-2-6024v-86Переполнениеположительными40Умножение¢Вычисление полного произведения w-битовых чисел x, y§ Или знаковых или беззнаковых¢Границы§ Беззнаковые: 0 ≤ x * y ≤ (2w – 1) 2 = 22w – 2w+1 + 1До 2w бит§ Минимальное в доп.коде: x * y ≥ (–2w–1)*(2w–1–1) = –22w–2 + 2w–1§ До 2w–1 бит§ Максимальное в доп коде : x * y ≤ (–2w–1) 2 = 22w–2§ До 2w бит, но только для (TMinw)2§¢Обеспечение полноты результата§ Необходимо расширение слова для каждого результата§ Реализуется лишь в программных пакетах арифметики“произвольной точности”41Умножение беззнаковыхu* vОперанды: w битПолное произведение:u2*w битБез w старших бит:w младших бит¢·v•••UMultw(u , v)••••••••••••Стандартное умножение беззнаковых в Cи§ Игнорирует старшие w бит§ Реализует умножение по модулюUMultw(u , v)=(u · v) mod 2w42Умножение знаковыхu* vОперанды: w битПолное произведение:u2*w бит·vБез w старших бит:w младших бит¢•••TMultw(u , v)••••••••••••Стандартное умножение знаковых в Cи§ Игнорирует старшие w бит§ Некоторые из них различаются для знакового ибеззнакового умножений§ Младшие биты такие-же43Умножение сдвигом на степень двойки¢Операция§ u << k даёт u*2k§ Для знаковых и беззнаковыхОперанд: w битПолное произведение:w+k битБез k старших бит:w младших бит¢Примерыku* 2k•••0u · 2k•••UMultw(u , 2k) •••TMultw(u , 2k)•••0 1 0•••0 00•••0 00•••0 0§ u << 3==u * 8§ u << 5 - u << 3==u * 24§ Большинство машин сдвигает и складывает быстрее умножения§Компилятор создаёт соответствующий код автоматически44Биты, байты и целые¢¢¢Представление информации в битахМанипуляции на уровне битЦелые§§§§§¢Представление: беззнаковое и знаковоеПреобразованияРасширение, сокращениеСложение, отрицание, умножение, сдвигСводкаПредставление в памяти, указатели, строки45Арифметика: основные правила¢Сложение:§ (Без)знаковые: Нормальное сложение с отсечением,идентичные действия с битами§ Беззнаковые: сложение по модулю 2w§ Математическое сложение и возможное уменьшение на 2w§ Знаковые: изменённое сложение по модулю 2w (результат вдопустимом диапазоне)§ Математическое сложение и возможное добавление илиуменьшение на 2w¢Умножение:§ (Без)знаковые: Нормальное умножение с отсечением, разныедействия с битами§ Беззнаковые: умножение по модулю 2w§ Знаковые: изменённое умножение по модулю 2w (результат вдопустимом диапазоне)46Зачем использовать беззнаковые?¢Не используйте без понимания последствий§ Легко сделать ошибкуunsigned i;for (i = cnt-2; i >= 0; i--)a[i] += a[i+1];§ Может быть очень коварным#define DELTA sizeof(int)int i;for (i = CNT; i-DELTA >= 0; i-= DELTA).

. .47Обратный отсчёт с беззнаковыми¢Правильно: счётчик цикла - беззнаковыйunsigned i;for (i = cnt-2; i < cnt; i--)a[i] += a[i+1];¢См. «Безопасное программирование на C и C++»,Роберт Сикорд, ISBN 978-5-8459-1908-3, «ВИЛЬЯМС», 2015§ Стандарт гарантирует, что беззнаковое сложение работает какматематическое сложение по модулю§ 0 – 1 à UMax¢Ешё лучшеsize_t i;for (i = cnt-2; i < cnt; i--)a[i] += a[i+1];§ Тип size_t определён как беззнаковый с длиной равной размеру слова§ Код работает даже если cnt = Umax§ А что если cnt – знаковый и < 0?48Зачем использовать беззнаковые? (ещё)¢Используйте для модулярной арифметики§ Арифметика произвольной точности¢Используйте для представления множеств§ Логический сдвиг вправо, без расширения знака49Биты, байты и целые¢¢¢Представление информации в битахМанипуляции на уровне битЦелые§§§§§¢Представление: беззнаковое и знаковоеПреобразованияРасширение, сокращениеСложение, отрицание, умножение, сдвигСводкаПредставление в памяти, указатели, строки50Байтовая организация памяти0•••00F•••FF•••¢Программы обращаются к виртуальным адресам§ Концептуально – очень большой массив байт§ В действительности реализуется иерархией запоминающих устройствразличного типа§ ОС предоставляет своё адресное пространство каждому «процессу»§ Программа исполняется в рамках своего «процесса»§ Программа может повредить только свои, но не чужие данные¢Компилятор, компоновщик, загрузчик и среда исполнения§ Определяют где хранятся различные программные объекты§ Выделяют память внутри единого адресного пространства51Машинные слова¢С машиной связан “размер слова”§ Обычный размер представления целых чиселВключая адреса§ Большинство мобильников ещё используют слова в 32 бита (4 байта)§ Предел адресации 4ГБ§ Недостаточно для интенсивной работы с памятью§ ПК и более мощные системы - используют слова в 64 бита (8 байт)§ Потенциальное адресное пространство ≈ 1.8 X 1019 байт§ Архитектура x86-64 использует 48-битовые адреса: 256 терабайт§ Машины поддерживают множество форматов данных§ Доли размера слова или кратные ему§ Всегда целое число байт§52Словная организация памяти¢Адреса указываютрасположение в байтах§ Адрес первого байта в слове§ Адреса последовательных словразличаются на 4 (32-битные) или8 (64-битные)32-бит.

64-бит.Байты Адресслова словаАдрес=0000??Адрес=0004??Адрес=0008??Адрес=0012??Адрес=0000??Адрес=0008??000000010002000300040005000600070008000900100011001200130014001553Целочисленные форматыТипы данныхязыка C32-биттипичноIntel IA32x86-64char111short222int444long448long long888указатель44854Порядок байт в слове¢¢В каком порядке располагаются в памятибайты многобайтового слова?Соглашения§ «Тупоконечники»: Sun, PPC Mac, InternetНаименее значимый байт имеет наибольший адрес§ «Остроконечники»: x86§ Наименее значимый байт имеет наименьший адрес§55Примеры упорядочения байт¢«Тупоконечное»§ Наименее значимый байт имеет наибольший адрес¢«Остроконечное»§ Наименее значимый байт имеет наименьший адрес¢Пример§ Переменная xимеет 4-байтовое представление 0x01234567§ Расположена по адресу &x - 0x100§«Тупоконечное»0x100 0x101 0x102 0x1030101«Остроконечное»2323454567670x100 0x101 0x102 0x103676745452323010156Десятичное:Представление Двоичное:Целочисленное Шестнадцатиричное:int A = 15213;IA32, x86-646D3B0000Sun00003B6Dint B = -15213;IA32, x86-6493C4FFFFSunFFFFC493152130011 1011 0110 11013B6Dlong int C = 15213;IA326D3B0000x86-646D3B000000000000Sun00003B6DДва представления в дополнительном коде(пояснения последуют)57Изучение представления данных¢Вывод байтового представления данных§ Представление указателя как массива unsigned char *typedef unsigned char *pointer;void show_bytes(pointer start, int len){int i;for (i = 0; i < len; i++)printf(”%p\t0x%.2x\n",start+i,start[i]);printf("\n");}Спецификации преобразования:%p:Вывод указателя%x:Вывод шестнадцатиричного58Пример исполненияshow_bytesint a = 15213;printf("int a = 15213;\n");show_bytes((pointer) &a, sizeof(int));Результат (x86, Linux):int a = 15213;0x11ffffcb8 0x6d0x11ffffcb9 0x3b0x11ffffcba 0x000x11ffffcbb 0x0059Представление указателейint B = -15213;int *P = &B;SunIA32x86-64EFD40CFFF889FBFFEC2CBFFFFF7F0000Различные компиляторы, ОС и машины дают различноерасположение в памяти60Представление строк¢Строки в Cchar S[6] = "18243";§ Представлены массивами сиволов§ Каждый символ представлен ASCII-кодомLinux/AlphaСтандартное 7-кодирование набора символов§ Символ “0” кодируется 0x30– Цифра i кодируется 0x30+i§ Строки должны завершаться нулевым кодом§ Символ окончания строки = 0§¢Совместимость§ ASCII-код не единственный§ Однобайтные коды не переупорядочиваютсяSun31313838323234343333000061Целочисленные головоломки CиДля каждого следующего выражения Си объясните почему оно…§ либо верно для любых значений аргументов,§ либо неверно.⇒ ((x*2) < 0)• x<0• ux >= 0⇒ (x<<30) < 0• x & 7 == 7• ux > -1⇒ -x < -y• x>yИнициализация• x * x >= 0⇒ x+y>0int x = function1();• x > 0 && y > 0⇒ -x <= 0• x >= 0int y = funciton2();⇒ -x >= 0• x <= 0unsigned ux = x;• (x|-x)>>31 == -1• ux >> 3 == ux/8unsigned uy = y;• x >> 3 == x/8• x & (x-1) != 0¢62.

Характеристики

Тип файла
PDF-файл
Размер
5,4 Mb
Тип материала
Высшее учебное заведение

Список файлов лекций

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6358
Авторов
на СтудИзбе
311
Средний доход
с одного платного файла
Обучение Подробнее