Задачи
1. Переведите в 8- разрядный двоичный код десятичные числа 31 и 19 и сложите их. Для проверки переведите полученную сумму в десятичную систему счисления.
2. Повторите вычисления предыдущей задачи, заменив первое слагаемое на -31. Подумайте, что изменится, если код сделать 16-разрядным?
3. Выберите произвольные значения двух целых чисел А и В и запишите их в виде 8-разрядных двоичных кодов. Проверьте путем непосредственных вычислений справедливость тождества А - В = А + ( -В).
4. Сложение ведётся в 8-разрядной арифметике со
знаком. Какое максимальное число можно прибавить к двоичной константе 1000002, чтобы не возникло переполнения? Как изменится результат, если число будет беззнаковым?
5. Переведите в двоичный код десятичные числа 12 и 7 и перемножьте их. Для проверки переведите результат в десятичную систему счисления.
6. Повторите вычисления предыдущей задачи, заменив первый сомножитель на —12. Считайте, что числа представлены в 8-разрядном коде.
7. Братья Петя и Коля часто спорят по поводу решения задач по информатике. Главная причина состоит в том, что Петя всегда решает задачу, как показал учитель, а Коля вечно придумывает что-то своё, причём не всегда удачно. Сегодня, например, они осваивали двоичную арифметику, умножая 10002 на 110112. Петя добросовестно умножал столбиком, а Коля взял второй сомножитель и, приписав к нему три нуля, получил такой же ответ. После объяснений
Петя был вынужден признать правоту брата. Как объяснил свое решение Коля?
8. Какое из двух беззнаковых чисел больше: 0111 0111 или 1000 1000? Изменится ли ваш ответ, если вам скажут, что исходные коды — это 8-разрядные числа со знаком? Переведите оба значения для случаев чисел со знаком и без него а десятичную систему счисления.
9. Код строчной латинской буквы 'а' равен 6116, а заглавной "А' —4116. Используя логическую операцию «И», преобразуйте код строчной буквы в код заглавной. Проверьте, работает ли предложенный вами метод для других букв.
10. Используя логическую операцию «ИЛИ», преобразуйте код заглавной буквы 'A' в код строчной 'a'. Проверьте, работает ли предложенный вами метод для других букв.
11. Петя и Коля решают домашнюю задачу: известны коды двух введённых цифр С1 и С2. Найти сумму этих цифр. Петя, как обычно, глядя на решение задач в классе, пишет:
1)N1 = C1 and 0F16;
2) N2 = C2 and 0F16;
3) S = N1 + N2/
Коля предлагает более короткое решение:
1) S = C1+C2;
2)S = S and 0F16/
Петя, ссылаясь на образцы задач в учебнике, критикует такой подход. Но Коля показывает на двух примерах ( '2' и '3'; '5' и '7'), что его алгоритм дает правильные результаты. Что скажет учитель по поводу Колиного решения?
12. Выполните битовую операцию Х and 3 для следующих десятичных значений Х: 4, 5,8,15,16. Для каких из них получился нулевой ответ? Что общего у этих чисел?
13. Разработайте аналогичные способы определения делимости на 2,8 и 16.
*14. Попробуйте разработать алгоритм, который позволяет поменять местами значения двух ячеек памяти, используя только операцию « исключающее ИЛИ».
15. Цвет точки в формате RGB хранится как 4- байтовое целое число , которое в шестнадцатеричном виде выглядит так: 00 RR GG BB ( т.е старший байтов не используется, а в каждом из последующих байтов хранится одна из трех цветовых компонент1). Какая из них потребует большего числа операция?
16. Петя и Коля решают задачу: цвет точки
как 4-байтовое целое число N, которое в
выглядит так: 00 RR GG ВВ. Написать последовательность операций, позволяющих выделить из 32-битного числа красную компоненту. Петино решение:
как 4-байтовое целое число N, которое в
выглядит так: 00 RR GG ВВ. Написать последовательность операций, позволяющих выделить из 32-битного числа красную компоненту. Петино решение:
1) N = N and FF000016;
2) логический сдвиг N вправо на 16 разрядов.
Колино решение содержит только вторую из этих операций. Чье решение правильное?
17. Используя только сдвиги, сбросьте 4 старших разряда 8- битного значения. Как с помощью сдвигов сбросить 4 младших разряда?
18. Каков результат логического сдвига влево на 4 разряда целого числа FEDC16 в 16- битном регистре? Сравните его с результатами циклического сдвига.
19. Два целых числа записаны в 16- битные регистры : 123416 и FEDC16. К каждому из них применяются логический, циклический и арифметический сдвиги вправо на 4 разряда ( каждый раз сдвигается первоначальное значение, а не результат предыдущего сдвига !) Напишите и объясните результаты для каждой операции.
20. Запишите число -18 и 8 - разрядном двоичном коде. Что получится, если применить к нему логический двуг вправо? Арифметический сдвиг вправо? Сравните полученные результаты и объясните их.
21. Переведите число -1 в дополнительный двоичный код и дважды примените к нему арифметический сдвиг вправо. Какой будет результат?
22. Выполните приведенный в тексте параграфа алгоритм умножения на 10 для Z=11002. Для проверки переведите результат в десятичную систему счисления.