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

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


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

Рабочая тетрадь № 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 в шестнадцатиразрядном битовом наборе

Решение:







Ответ:




0000 0000 1000 0100

2.

Задача:




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

Решение:







Ответ:




1111 1111 1111 1111/0000 0000 0000 0001




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)

Решение:







Ответ:




0,0001100

2.

Задача:




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

Решение:







Ответ:




1,0100011/1,1011100/1,011101

3.

Задача:




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

Решение:







Ответ:




-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. Вычислить (А-В)ок, (В-А)дк.




Решение:












Ответ:







277/106






Тест 3

0.

Задание:




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

Ответ:




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

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

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

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

2.

Задание:




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

Ответ:




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

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

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

3.

Задание:




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

Ответ:




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

B) прямой код

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

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

4.

Задание:




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

Ответ:




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

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

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

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



5.

Задание:




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

Ответ:




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

B) прямой код

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

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

6.

Задание:




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

Ответ:




A) 00001110 B) 0110010

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

7.

Задание:




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

Ответ:




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

8.

Задание:




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

Ответ:




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

9.

Задание:




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

Ответ:




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

10.

Задание:




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

Ответ:







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

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




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

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

importmath

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

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

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

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

whiley<= 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())

y=float(input())

print('f=',math.log1p(math.fabs(math.sin(x+y))))

2.

Задача:




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



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




import math

x=float(input())

y=float(input())

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

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

elif math.sin(x+y)>-0.5 and math.sin(x+y)<0.5:

print('f=',3*math.log(math.fabs(x*y),3))

else:

print('f=',x**3+y**1.5)

3.

Задача:




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

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




import math

a=float(input())

b=float(input())

hx=float(input())

x=a

while x<=b:

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

x+=hx




4.

Задача:




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



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

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




ax,bx,hx=1,2.5,0.5

ay,by,hy=1,4,1

x=ax

while x<=bx:

y=ay

while y<=by:

if x+y<=2:

print('f=',math.pow(math.sin(x*math.exp(0.1*y)),1\3))

else:

print('f=',math.fabs(math.log2(x+y)))

x+=hx

y+=hy



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