Компьютерная арифметика. Операции с целыми числами

Содержание

Слайд 2

Сложение и вычитание 0000 0101 1111 0111 + 1111 1100 -4

Сложение и вычитание

0000 0101

1111 0111

+

1111 1100

-4 ←
Складываем столбиком, не задумываясь о

знаках чисел
Слайд 3

Переполнение При сложении двух чисел с одинаковыми знаками может произойти переполнение.

Переполнение

При сложении двух чисел с одинаковыми знаками может произойти переполнение. Сложим

десятичные числа со знаком 96 и 33. Их сумма 129 выходит за 8-битную сетку. ( Объясните почему? )
Добавим к обоим слагаемым слева еще один старший бит, совпадающим со знаковым.
Слайд 4

Умножение (обычная схема в «столбик») 9 5 →45 00001001 × 00000101

Умножение (обычная схема в «столбик»)

9
5

→45

00001001

×

00000101

00001001

00000000

00001001

0000101101

+

-9
5

→-45

11110111

×

00000101

11110111

00000000

11110111

10011010011

+

8 разрядов

8 разрядов

Старший (7-й) разряд равен 0

– число положительное
1011012=4510

Старший (7-й) разряд равен 1 – число отрицательное, код дополнительный. Применим алгоритм А2 (инвертируем все разряды левее последней 1, знаковый меняем на -)
-01011012=- 4510

Слайд 5

Поразрядные логические операции Поразрядные (битовые) операции выполняются с отдельными битами числа

Поразрядные логические операции

Поразрядные (битовые) операции выполняются с отдельными битами числа и

не влияют на остальные.

регистр

Операция «НЕ» (инверсия, not):

R

not R

Слайд 6

Основные понятия Сброс – это запись в бит нулевого значения. Установка

Основные понятия

Сброс – это запись в бит нулевого значения.
Установка – это

запись в бит единичного значения
Маска – константа, которая определяет область применения логической операции к битам многоразрядного числа.
С помощью маски можно скрывать (защищать) или открывать для выполнения операции отдельные биты.
Слайд 7

Логическая операция «И» (and, &) данные маска Маска – константа, которая

Логическая операция «И» (and, &)

данные

маска

Маска – константа, которая определяет область применения

логической операции к битам многоразрядного числа.

D

D and M

M

AA16

6С16

2816

AA16 and 6C16 = ?
1010 10102 and 0110 11002 = ?

2 8

Слайд 8

Логическая операция «ИЛИ» (or, |) D D or M M AA16

Логическая операция «ИЛИ» (or, |)

D

D or M

M

AA16

6С16

EE16

AA16

or 6C16 = ?
Слайд 9

Операция «исключающее ИЛИ» (xor, ^) D D xor M M AA16

Операция «исключающее ИЛИ» (xor, ^)

D

D xor M

M

AA16

6С16

C616

AA16

xor 6C16 = ?
Слайд 10

Битовые логические операции (итог) R 1) отключить лампочки 2 и 1,

Битовые логические операции (итог)

R

1) отключить лампочки 2 и 1, не

трогая остальные

R = R and F916

2) включить лампочки 7 и 4

R = R or 9016

3) изменить состояние лампочек 5, 4 и 2

R = R xor 3416

Дано некоторое 8-битное число R. Записать состояние маски для задач 1-3

Слайд 11

Шифрование с помощью xor Идея: (A xor B) xor B =

Шифрование с помощью xor

Идея: (A xor B) xor B =

A

Рассмотрим пример

текста: 2*2=4

Коды символов:
'2' = 3216 = 001100102
'*' = 2A16 = 001010102
'=' = 3D16 = 001111012
'4' = 3416 = 001101002

Применим маску, например:
23 = 1716 = 000101112

'2' → 3216 xor 1716 =
'*' → 2A16 xor 1716 =
'=' → 3D16 xor 1716 =
'4' → 3416 xor 1716 =

2516 → '%'
3D16 → '='
2A16 → '*'
2316 → '#'

Слайд 12

Шифрование с помощью xor Исходный текст: 2*2=4 Маска: 23 = 1716

Шифрование с помощью xor

Исходный текст: 2*2=4

Маска: 23 = 1716 = 000101112

Зашифрованный

текст: %=%*#

Расшифровка:

'%' → 2516 xor 1716 =
'=' → 3D16 xor 1716 =
'*' → 2A16 xor 1716 =
'#' → 2316 xor 1716 =

3216 → '2'
2A16 → '*'
3D16 → '='
3416 → '4'

Слайд 13

Логический сдвиг Влево: бит переноса С Вправо: С Запись сдвига: N

Логический сдвиг

Влево:

бит переноса

С

Вправо:

С

Запись сдвига:

N := N shl 1;
N := N shr

1;

shift left

shift right

Слайд 14

Логический сдвиг Влево: 12 24 Вправо: 12 6 Логический сдвиг влево

Логический сдвиг

Влево:

12

24

Вправо:

12

6

Логический сдвиг влево (вправо) – это быстрый способ умножения (деления

без остатка) положительного числа на 2.
Слайд 15

Арифметический сдвиг (вправо) –12 С – 6 Примеры: 20 15 11

Арифметический сдвиг (вправо)

–12

С

– 6

Примеры:

20

15

11

3

1

→ 10

→ 7

→ 5

→ 1

→ 0

–20

–15

–11

–3

–1

→ –10

→ –8

–6

→ –2

→ –1

Арифметический сдвиг вправо – деление на 2 нацело с округлением «вниз» (к ближайшему меньшему целому).

Слайд 16

Циклический сдвиг Влево: Вправо:

Циклический сдвиг

Влево:

Вправо:

Слайд 17

Пример Задача: в целой переменной N (32 бита) закодирована информация о

Пример

Задача: в целой переменной N (32 бита) закодирована информация о цвете

пикселя в RGB:
Записать в переменные R, G, B составляющие цвета.
Вариант 1:
Обнулить все биты, кроме G. Маска для выделения G: 0000FF0016
Сдвинуть вправо так, чтобы число G передвинулось в младший байт.

G:=(N and 0000FF00) shr 8

Слайд 18

Пример Вариант 2: Сдвинуть вправо так, чтобы число G передвинулось в

Пример
Вариант 2:
Сдвинуть вправо так, чтобы число G передвинулось в младший байт.
Обнулить

все биты, кроме G. Маска для выделения G: 000000FF16

G:=(N shr 8) and 000000FF

Слайд 19

Задание R:= B:= Используя приведенные алгоритмы, записать в переменные R, B составляющие цвета.

Задание

R:=
B:=

Используя приведенные алгоритмы, записать в переменные R, B составляющие цвета.