Главная страница

Рабочая тетрадь 3


Скачать 96.73 Kb.
НазваниеРабочая тетрадь 3
АнкорРабочая тетрадь 3.docx
Дата09.10.2022
Размер96.73 Kb.
Формат файлаdocx
Имя файлаRabochaya_tetrad_3.docx
ТипДокументы
#723716

Рабочая тетрадь № 3

Для представления чисел в ЭВМ обычно используют битовые наборы – последовательности нулей и единиц фиксированной длины. Позиция в битовом наборе называется разрядом.





1. Теоретический материал

Для представления целых чисел без знака удобен битовый набор, соответствующий записи в двоичной системе счисления. Для целых числе без знака как правило выделяютk = 8, 16, 32 или 64 разряда.

Для получения компьютерной записи целого числа без знака требуется его перевод в двоичную систему счисления, далее необходимо дополнить результат нулями слева до стандартной разрядностиk.

2. Пример

Задача:




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

Решение:




Переведем число 26 в двоичную систему счисления.

26

2













-26

13

2










0

-12

6

2










1

-6

3

2










0

-2

1













1







Результат перевода: 2610 = 110102

Дополним полученный результат слева нулями до восьми шестнадцати

2610 = 000 110102

Ответ:




00011010





3. Задания

1.

Задача:




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

Решение:




Переведем число 132 в двоичную систему счисления.

132/2 = 66 (ост. 0); 66/2 = 33 (ост. 0); 33/2 = 16 (ост.1); 16/2 = 8 (ост. 0); 8/2 = 4 (ост. 0); 4/2 = 2 (ост. 0); 2/2 = 1 (ост.0)

Результат перевода: 13210 = 100001002

Дополним полученный результат слева нулями до шестнадцати

13210 = 00000000 100001002

Ответ:




0000000010000100

2.

Задача:




Найти минимальное и максимальное значения чисел для 16-ти разрядного беззнакового представления

Решение:




Минимальное – 00000000000000002 = 010

Максимальное – 11111111111111112 = 1*20 + 1*21 + 1*22 + 1*23 + 1*24 + 1*25 + 1*26 + 1*27 + 1*28 + 1*29 + 1*210 + 1*211 + 1*212 + 1*213 + 1*214 + 1*215 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024 + 2048 + 4096 + 8192 + 16384 + 32768 = 6553510

Ответ:




0, 65535




1. Теоретический материал

Для целых чисел со знаком задействуют три варианта компьютерного представления:

  • представление в прямом коде;

  • представление в обратном коде;

  • представление в дополнительном коде.

Во всех этих способах старший (левый) разряд равен нулю, если число положительное и единице, если число отрицательное. Остальные разряды числа (цифровая часть или мантисса) задействованы для представления модуля числа.

Положительные числа в дополнительном, обратном и прямом коде идентичны – мантисса включает двоичное представление числа, а в старшем разряде располагается ноль.

Для отображения отрицательного значения в прямом коде, в разряд знака ставиться единица, а в разряды мантиссы – двоичный код его модуля.

Обратный код отрицательного числа получается инверсией всех цифр двоичного представления абсолютной величины, включая знаковый разряд: нули инвертируются в единицы, а единицы в нули.

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



2. Пример

Задача:




Перевести число 45 в прямой, обратный и дополнительный код (k = 8)

Решение:




Сначала переведем десятичное число 45 в двоичную систему счисления.

45

2
















-44

22

2













1

-22

11

2













0

-10

5

2













1

-4

2

2













1

-2

1
















0







Получилось:4510 = 1011012.

Запишем прямой код числа. Первый слева разряд 0 (знак «плюс»). Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева. Таким образом, для числа 45 получаем прямой код в виде 0,0101101 (первый слева 0 соответствует знаку, затем следует 0, дополняющий число до 7 разрядов, затем следует само двоичное число). Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково.

Ответ:




0,0101101


Задача:




Найти прямой, обратный и дополнительный коды в однобайтовом представлении для числа -5610.

Решение:




Выполним перевод положительного числа 56 в двоичную систему счисления, получим: 5610 = 1110002.

Запишем прямой код числа. Всего в однобайтовом представлении 8 двоичных разрядов. Первый слева разряд – знаковый: 1 – для отрицательного числа. Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева. Таким образом, для числа -56 получаем прямой код в виде 1,0111000.

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

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

1000111

+ 1

_____________

1001000

Получаем: 1,1001000

Ответ:




Прямой код 1,0111000

Обратный код 1,1000111

Дополнительный код 1,1001000




3. Задания

1.

Задача:




Перевести число 12 в прямой, обратный и дополнительный код (k = 8)

Решение:




Сначала переведем десятичное число 12 в двоичную систему счисления.

12/2 = 6 (ост. 0); 6/2 = 3 (ост. 0); 3/2 = 1 (ост.1)

Получилось:1210 = 11002.

Запишем прямой код числа. Первый слева разряд 0 (знак «плюс»). Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева. Таким образом, для числа 12 получаем прямой код в виде 0,0001100 (первый слева 0 соответствует знаку, затем следуют три 0, дополняющий число до 7 разрядов, затем следует само двоичное число). Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково.

Ответ:




0,0001100

2.

Задача:




Найти прямой, обратный и дополнительный коды в однобайтовом представлении для числа -3510.

Решение:




Выполним перевод положительного числа 35 в двоичную систему счисления, получим: 3510 = 1000112.

Запишем прямой код числа. Всего в однобайтовом представлении 8 двоичных разрядов. Первый слева разряд – знаковый: 1 – для отрицательного числа. Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева. Таким образом, для числа -35 получаем прямой код в виде 1,0100011.

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

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

1011100

+ 1

_____________

1011101

Получаем: 1,1011101

Ответ:




Прямой код 1,0100011

Обратный код 1,1011100

Дополнительный код 1,1011101

3.

Задача:




Задан дополнительный код числа в однобайтовом представлении: 1,1011100. Найти число в десятичной системе счисления.

Решение:




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

1011100

- 1

_____________

1011011

Обратный код (1,1011011) отрицательного числа получается из прямого инверсией всех разрядов, за исключением знакового.

Прямой код (1,0100100).

Х10 = 1001002

Х10 = 0*20 + 0*21 + 1*22 + 0*23 + 0*24 + 1*25 = 0 + 0 + 4 + 0 + 0 + 32 = 3610

Так как первый слева разряд – 1 – число отрицательно.

Ответ:




-36



1. Теоретический материал

Сложение и вычитание чисел без знака осуществляется по стандартным алгоритмам для позиционных систем счисления.

При сложении в обратном коде складываются все разряды (включая знаковый) по обычному алгоритму. Результат сложения для k-разрядных чисел в общем виде имеет длину k+1 (старший разряд единица, если при сложении старших разрядов операндов был перенос, иначе – ноль). Значение левого k+1-го разряда прибавляется к младшему разряду результата. В итоге получим k-разрядный битовый набор – сумму чисел в обратном коде. Разность чисел в обратном коде x y можно свести к операции сложения x + (–y).

В дополнительном коде для сложения сначала по обычному алгоритму складываются все разряды (включая знаковый), а затем единицу переноса в k+1-й разряд необходимо отбросить.



2. Пример

Задача:




Сложить два числа: А10 = 7, В10 = 16.

Решение:




Переведем числа в двоичную систему счисления

А2 = +111 = +0111; В2 = +10000.

Исходные числа имеют различную разрядность, необходимо провести выравнивание разрядной сетки:

[A2]п = [A2]ок = [A2]дк = 0|00111; [В2]п = [В2]ок = [В2]дк = 0|10000.

Сложение в обратном или дополнительном коде дает один и тот же результат:

+

0|

00111

0|

10000

С2 =

0|

10111

С10 =

23



Ответ:




23

Задача:




Сложить два числа: А10 = +16, В10 = -7 в ОК (обратный код) и ДК (дополнительный код).

Решение:




Требуется преобразование А+(-В), в котором второй член записывается с учетом его знака:

[A2]п = [A2]ок = [A2]дк = 0|10000;

2]п = 1|111 = 1|00111; [В2]ок = 1|11000; [В2]дк = 1|11001



При складывании чисел в обратном и дополнительном кодах получены переносы в знаковый разряд и из знакового разряда. В случае первом случае (обратный код) при переносе из знакового разряда необходимо дополнительно прибавить единицу младшего разряда. Во втором случае (дополнительный код) данный перенос игнорируется.

Ответ:




9



3. Задания

Задача:







Дано два десятичных двузначных целых числа: А = 78, В = 56. Вычислить (А-В)ок, (В-А)дк.




Решение:







Переведем числа в двоичную систему счисления

А2 = +1001110; В2 = +111000.

Требуется преобразование А+(-В), в котором второй член записывается с учетом его знака:

[A2]п = [A2]ок = [A2]дк = 0|1001110;

2]п = 1|111000 = 1|0111000; [В2]ок = 1|1000111; [В2]дк = 1|1001000

+

0|

1001110

1|

1000111



С2 =

10|

+\

0|

0010101

---------1

0010110

С10 =

+22

Требуется преобразование B+(-A), в котором второй член записывается с учетом его знака:

[B2]п = [B2]ок = [B2]дк = 0|111000 = 0|0111000;


+

0|

0111000

1|

0110010



С2 =

1|
1|

1101010
1101010
[A2]п = 1|1001110; [A2]ок = 1|0110001; [A2]дк = 1|0110010

В старшем бите 1. Следовательно, в результате сложения получили отрицательное число. Переведем его обратно в прямой код.

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

1101010

- 1

_____________

1101001

Обратный код (1, 1101001) отрицательного числа получается из прямого инверсией всех разрядов, за исключением знакового.

Прямой код (1,0010110).

Х10 = 00101102 = 101102

Х10 = 0*20 + 1*21 + 1*22 + 0*23 + 1*24 = 0 + 2 + 4 + 0 + 16 = 2210

Так как первый слева разряд – 1 – число отрицательно.




Ответ:







22, -22






Тест 3

0.

Задание:




Для представления целого числа может применяться

Ответ:




A) нормализованный или ненормализованный код

B) прямой, обратный или дополнительный код

C) естественный или экспоненциальный код

D) логарифмический и показательный код

0.

Задание:




Положительное число

Ответ:




A) выглядит одинаково только в прямом и обратном кодах

B) выглядит одинаково только в обратном и дополнительном кодах C) выглядит одинаково в прямом, обратном и дополнительном кодах

D) выглядит различно в прямом, обратном и дополнительном кодах

0.

Задание:




Если взять отрицательное число и инвертировать разряды кроме знакового, то получится

Ответ:




A) обратный код

B) прямой код

C) дополнительный код

D) двоичный код

0.

Задание:




Дополнительный код числа получается

Ответ:




A) из обратного кода прибавлением единицы к младшему разряду без переноса в знаковый разряд

B) из обратного кода прибавлением единицы к младшему разряду с переносом в знаковый разряд

C) из прямого кода прибавлением единицы к младшему разряду без переноса в знаковый разряд

D) из прямого кода прибавлением единицы к младшему разряду с переносом в знаковый разряд



0.

Задание:




Если к двоичному числу без знака добавить знаковый разряд то получится

Ответ:




A) обратный код

B) прямой код

C) дополнительный код

D) двоичный код

0.

Задание:




Число Х = 1410 в восьми разрядном двоичном дополнительном коде равняется

Ответ:




A) 00001110 B) 0110010

C) 1110001 D) нет верного ответа

0.

Задание:




Восьми разрядное двоичное число Х = (10001010)2, заданное в дополнительном коде в десятичной системе равняется

Ответ:




A) –10 B) +10 C) –117 D) –118

0.

Задание:




Восьми разрядное двоичное число Х = (00100111)2 заданное в обратном коде в десятичной системе равняется

Ответ:




A) –39 B) +39 C) –88 D) +88

0.

Задание:




Число Х = -6310 в прямом коде будет представлено как

Ответ:




A) 10111111 B) 00111111 C) 10011111 D) 00011111

0.

Задание:




Укажите дополнительный код десятичного числа
-103 (минус сто три) в 8 разрядном компьютерном представлении.

Ответ:




10011001

Реализация задач на языке программирования Python

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




1. Теоретический материал

Для математических расчетов с использованием стандартных математических функций требуется импортировать соответствующую библиотеку:

import math

После импорта к функциям библиотеки можно обращаться следующим образом:

math.имя_функции(…)

В таблице представлен синтаксис и описание ключевых математических функций библиотеки math языка Python

Функция

Назначение

ceil(x)

Округляет число x до ближайшего большего целого (округление "вверх").

floor(x)

Округляет число x до ближайшего меньшего целого (округление "вниз").

fabs(x)

Принимает абсолютное значение (модуль) числа x.

exp(x)

Принимает значение ex.

log(x[, b])

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

pow(x, y)

Принимает значение x в степени y.

sqrt(x)

Принимает значение квадратного корня из x.

acos(x)

Принимает значение арккосинуса x в радианах.

asi

(x)

Принимает значение арксинуса x в радиан

х.

atan(x)

Принимает значение арктангенса x в радианах.

cos(x)

Принимает значение косинуса x, где x выражен в радианах.

sin(x)

Принимает значение синуса x, где x выражен в радианах.

tan(x)

Принимает значение тангенса x, где x выражен в радианах.





2. Пример

Задача:




Для введенных чисел x и y найти значение функции

f(x,y) = 2yx+ ln|x+y3|

Решение (код программы):




import math

x = float(input('Введите x '))

y = float(input('Введите y '))

f = 2 * math.pow(y, x) + math.log(math.fabs(x + y ** 3))

print('f = ', f)

Задача:




Для введенных чисел x и y найти значение функции



Решение (код программы):




import math

x = float(input('Введите x '))

y = float(input('Введите y '))

if x * y <= -1:

f = math.sin(x * math.exp(y))

elif x * y >= 5:

f = x * x + math.tan(y)

else:

f = math.sqrt(math.fabs(math.cos(x * y)))

print('f = ', f)

Задача:




Вычислить значение функции f(x) = sin(x – e2) + 3x на отрезке [xn, xk] с шагом hx



Решение (код программы):




import math

xn = float(input('Введите xn '))

xk = float(input('Введите xk '))

hx = float(input('Введите hx '))

x = xn #устанавливаем x в начало отрезка в xn

whilex<= xk: #пока не дойдем до конца отрезка xk

f = math.sin(x + math.exp(2)) + math.pow(3, x)

print('x = ', x, ' f = ', f)

x = x + hx #прибавляем к аргументу шаг

Задача*:




Вычислить значения функции



При этом x изменяется в отрезке с шагом ; y изменяется в отрезке с шагом .

Решение (код программы):




import math
ax, bx, hx = 0.0, 1.0, 0.2

ay, by, hy = 1.0, 2.0, 0.5
x = ax #устанавливаем x в начало отрезка в xn

while x<= bx: #пока не дойдем до xk

y = ay #устанавливаем y в начало отрезка в yn

while y<= by: #пока не дойдем до yk

if x + y <= 2:

f = math.pow(x + y, 1.0 / 5.0)

else:

f = math.pow(math.fabs(math.sin(x)), y)

print('x: = ', x, 'y = ', y, 'f = ', f) # выводим результат

# или print('x = {:.3}, y = {:.3}, f = {:.3}'.format(x,y,f))

# или print(f'x = {x:.3}, y = {y:.3}, f = {f:.3}')

y = y + hy #прибавляем к y шаг

x = x + hx #прибавляем к x шаг




3. Задания

1.

Задача:




Для введенных чисел x и y найти значение функции



Решение (код программы):




import math

x = float(input('Введите x '))

y = float(input('Введите y '))

f = math.log(math.fabs(math.sin(x + y)))

print('f = ', f)

2.

Задача:




Для введенных чисел x и y найти значение функции



Решение (код программы):




import math

x = float(input('Введите x '))

y = float(input('Введите y '))

if math.sin(x + y) <= -0.5:

f = math.atan((math.pow(math.fabs(x - y),1/3)*(x * math.exp(y))))

elif math.sin(x + y) >= 0.5:

f = math.pow(x,3) + math.pow(y,1.5)

else:

f = 3*math.log(math.fabs(x * y)[ 3])

print('f = ', f)

3.

Задача:




Вычислить значение функции f(x) = cos3(e*x) + sin|x| на отрезке [a, b] с шагом hx

Решение (код программы):




import math

a = float(input('Введите a '))

b = float(input('Введите b '))

hx = float(input('Введите hx '))

x = a

while x <= b:

f = math.pow(math.cos(math.e*x),3) + math.sin(math.fabs(x))

print('x = ', x, ' f = ', f)

x = x + hx



4.

Задача:




Вычислить значения функции



При этом x изменяется в отрезке с шагом ; y изменяется в отрезке с шагом .

Решение (код программы):




import math
ax, bx, hx = 1.0, 2.5, 0.5

ay, by, hy = 1.0, 4.0, 1.0
x = ax

while x<= bx:

y = ay

while y<= by:

if x + y <= 2:

f = math.pow(math.sin(x*(math.pow(math.e,0.1*y))), 1.0/3.0)

else:

f = math.fabs(math.log((x+y),2.0))

print('x: = ', x, 'y = ', y, 'f = ', f)

y = y + hy

x = x + hx



написать администратору сайта