Системы счисления и коды
Практическая и математическая постановка задачи: перевод чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную. Описание разрабатываемого алгоритма, его укрупненная схема. Развернутая блок-схема и листинг. Решение контрольного примера.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 17.05.2013 |
Размер файла | 55,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Министерство образования и науки РФ.
Рязанский государственный радиотехнический университет.
Кафедра САПР ВС.
Курсовая работа
по дисциплине “Информатика”
Системы счисления и коды
Выполнил: студент гр.249
Быков Н. А.
Проверил:
Орехов В. В.
Содержание
1. Введение
2. Практическая и математическая постановка задачи
3. Описание разрабатываемого алгоритма, его укрупненная схема
4. Развернутая блок-схема алгоритма
5. Решение контрольного примера
6. Текст программы
7. Листинг с результатами
Заключение
Список литературы
алгоритм счисление перевод число
1. Введение
В повседневной жизни мы, как правило, пользуемся десятичной системой счисления. Но это лишь одна из многих систем, которая получила свое распространение, вероятно, по той причине, что у человека на руках 10 пальцев. Однако эта система не всегда удобна. Так, в вычислительной технике применяется двоичная система счисления.
В разные исторические периоды развития человечества для подсчетов и вычислений использовались те или иные системы счисления. Например, довольно широко была распространена двенадцатеричная система. Многие предметы (ножи, вилки, тарелки, носовые платки и т. д.) и сейчас считают дюжинами. Число месяцев в году двенадцать. Двенадцатеричная система счисления сохранилась в английской системе мер (например, 1 фут = 12 дюймам) и в денежной системе (1 шиллинг = 12 пенсам).
В древнем Вавилоне существовала весьма сложная шестидесятеричная система. Она, как и двенадцатеричная система, в какой-то степени сохранилась и до наших дней (например, в системе измерения времени: 1 час = 60 минутам, 1 минута = 60 секундам, аналогично в системе измерения углов: 1 градус = 60 минутам, 1 минута = 60 секундам).
Вначале проанализируем различия между цифрами и числами: число это абстрагированная от конкретики запись количества (например, число 25 это двадцать пять предметов чего угодно и не только предметов, а, скажем, лет или килограммов), а цифра это специальный знак для обозначения количества единиц. Следует обратить внимание, что цифры это тоже записи чисел, например 8 это не только цифра, но и число.
Слово «цифра» происходит от позднелатинского слова «cifra», первые цифры появились у египтян и вавилонян, причем интересно, что цифры, как специальные знаки, образовались позже, чем буквы. Так, многие народы (греки, финикияне, евреи, сирийцы) для цифр использовали буквы алфавита, в России аналогичная система применялась вплоть до XVI века. Современные так называемые «арабские цифры» имеют неясное происхождение, например, утверждают, что они принесены в Европу арабами в XIII веке возможно из Индии. Повсеместно их стали использовать с XV века.
Число это одно из фундаментальных и самых древних понятий математики; оно появилось сначала в связи со счетом отдельных предметов, а затем, абстрагировавшись, стало обозначать количественную меру. Это привело к идее о бесконечности натурального ряда чисел: 1, 2, 3, 4... и т. д. Для наших целей такого определения достаточно, но математиками были разработаны и другие числа. В частности, задачи измерения площадей привели к понятию рационального (дробного) числа, затем появились отрицательные числа, необходимость в вычислении отношения диагонали квадрата к его стороне привела к открытию иррациональных чисел, рациональные и иррациональные числа составляют совокупность действительных чисел и т. д. И лишь в XIX веке была разработана теория действительных чисел. Новый импульс эта теория получила в связи с развитием компьютерных технологий.
Известно, что числовая ось бесконечна, поскольку к каждому числу можно прибавить еще единицу и получить следующее число, с которым можно поступить так же. При этом понятно, что придумывать какие-либо специальные обозначения (цифры) для любого элемента (числа) бесконечной числовой оси нереально.
Поэтому для записи произвольного числа бесконечной числовой оси прибегают к помощи одной или нескольких систем счисления.
Счисление (система счисления) это способ представления любых чисел с помощью определенного количества знаков (цифр) по позиционному принципу.
В этом определении стоит выделить следующие важные моменты.
Количество знаков, которые обычно именуются «цифрами», всегда ограничено. И с помощью такого, ограниченного количества цифр (обычно мы используем десять цифр) удается записывать произвольные числа, например 23 456 или 1 000 123 456 789.
Чтобы преодолеть это ограничение, используется особый способ записи, который называется «позиционным».
Позиционная система счисления состоит в использовании ограниченного числа цифр, зато позиция каждой цифры в числе обеспечивает значимость (вес) этой цифры. Позиция цифры на математическом языке называется разрядом.
Другими словами, значение цифры «переменчиво» и зависит от ее позиции в числе. Например, в числе «одиннадцать» («11») две единицы имеют разное значение, это относится и к другим сочетаниям «единиц» «111», «1111», «11 111» и т. д.
Не всякие числовые системы используют именно такой позиционный способ записи, в истории человечества были и иные эксперименты.
Способ записи чисел с помощью римских цифр не грешит единообразием: если цифра расположена справа, то ее значение прибавляется к предыдущей, например число «XI» означает «одиннадцать», а если слева, то значение вычитается, например число «IX», состоящее из тех же цифр, уже означает только «девять». Кроме того, в римской системе счисления в числе вес цифры X в любой позиции равен просто десяти, например число XXXII (тридцать два). И, наконец, цифры разбросаны по оси чисел.
В нашу современную жизнь многое пришло из Рима, в том числе римское право, латынь в медицине и фармакологии. Однако римская система счисления не прижилась, потому что она отличается указанной выше сложностью, которая препятствует технологичности: скажем, римские числа трудно складывать или умножать, не говоря уже о более сложных функциях.
Существует не одно множествоифр, образующих систему счисления. Это множество получило особое название основание системы счисления.
Основание позиционной системы счисления это количество различных знаков или символов (цифр), используемых для отображения чисел в данной системе.
Выбор количества цифр диктуется какими-либо потребностями реальной жизни, науки или удобствами обработки. Исторически этот выбор определялся привычками или традициями конкретного народа.
Наиболее привычной для нас является десятичная система счисления. Исторически вначале, видимо, использовалась непозиционная единичная система счета с помощью камней или палочек. Система счета состояла из двух чисел один и два, а все, что больше двух, обозначалось, как «много».
Затем, благодаря наличию десяти пальцев рук у человека, возникла десятичная система счета. В этой системе используются специальные графические знаки арабские цифры, которые можно записать в следующем порядке: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Таких знаков десять, и они специально разделены запятыми, чтобы показать, что это отдельные («дискретные») знаки, которые не зависят друг от друга.
Идея позиционной системы счисления выдвигалась еще Архимедом в работе «Исчисление песка».
Перевод чисел из одной системы счисления в другую
Рассмотрим способы перевода чисел из одной системы счисления в другую.
а) Перевод двоичного числа в десятичное.
Необходимо сложить двойки в степенях, соответствующих позициям, где в двоичном стоят единицы. Например:
Возьмем число 20. В двоичной системе оно имеет следующий вид: 10100.
Итак (считаем слева направо, считая от 4 до 0; число в нулевой степени всегда равно единице)
10100 = 1*24 + 0*23 + 1*22 + 0*21 + 0*20 = 20
16+0+4+0+0 = 20.
б) Перевод десятичного числа в двоичное.
Необходимо делить его на два, записывая остаток справа налево:
20/2 = 10, остаток 0
10/2=5, остаток 0
5/2=2, остаток 1
2/2=1, остаток 0
1/2=0, остаток 1
В результате получаем: 10100 = 20
в) Перевод шестнадцатеричного числа в десятичное.
В шестнадцатеричной системе номер позиции цифры в числе соответствует степени, в которую надо возвести число 16:
8A = 8*16 + 10 (0A) = 138
Напоследок приведем алгоритм перевода в двоичную и из двоичной системы, предлагаемый Л. Радюком.
Пусть А(цд) - целое десятичное число. Запишем его в виде суммы степеней основания 2 с двоичными коэффициентами. В его записи в развёрнутой форме будут отсутствовать отрицательные степени основания (числа 2):
A(цд) = a(n-1) * 2^(n-1) + a(n-2) * 2^(n-2) + … + a(1) * 2^1 + a(0) * 2^0.
На первом шаге разделим число А(цд) на основание двоичной системы, то есть на 2. Частное от деления будет равно:
a(n-1) * 2^(n-2) + a(n-2) * 2^(n-3) + … + a(1), а остаток равен a(0).
На втором шаге целое частное опять разделим на 2, остаток от деления будет теперь равен a(1).
Если продолжать этот процесс деления, то после n-го шага получим последовательность остатков:
a(0), a(1),…, a(n-1).
Легко заметить, что их последовательность совпадает с обратной последовательностью цифр целого двоичного числа, записанного в свёрнутой форме:
A(2) = a(n-1)…a(1)a(0).
Таким образом, достаточно записать остатки в обратной последовательности, чтобы получить искомое двоичное число.
Тогда сам алгоритм будет следующим:
1. Последовательно выполнять деление исходного целого десятичного числа и получаемых целых частных на основание системы (на 2) до тех пор, пока не получится частное, меньшее делителя, то есть меньше 2.
2. Записать полученные остатки в обратной последовательности, а слева добавить последнее частное.
Для перевода чисел из восьмеричной и шестнадцатеричной систем счисления в двоичную необходимо цифры числа преобразовать в группы двоичных цифр. Для перевода из восьмеричной системы в двоичную каждую цифру числа надо преобразовать в группу из трёх двоичных цифр триаду, а при преобразовании шестнадцатеричного числа в группу из четырёх цифр тетраду.
2. Практическая и математическая постановка задачи
1. Ввести 2 двоичных вещественных числа.
2. Проверка ввода.
3. Выделить в введенных числах целую и вещественную части.
4. Целые части перевести в десятичную систему счисления умножением на степень двойки.
5. Дробные части перевести в десятичную систему счисления умножением на два.
6. Соединить целые и дробные части обоих чисел в десятичной системе счисления.
7. Выполнить 4 арифметических операции над полученными десятичными числами.
8. Разделить результаты арифметических чисел на целую и вещественные части.
9. Перевести целые части в двоичную систему счисления делением на два.
10. Перевести вещественные части в двоичную систему счисления умножением на 2.
11. Соединить вместе целые и дробные части.
12. Вывод результата.
3. Описание разрабатываемого алгоритма, его укрупненная схема
Размещено на http://www.allbest.ru
4. Развернутая блок-схема алгоритма
Размещено на http://www.allbest.ru
5. Решение контрольного примера
Входные данные:
X1 = 1001.1012
X2 = 1002
Перевод в десятичную систему счисления:
10012 = 910
0.1012 = 0.62510
X1 = 9.6252
1002 = 410
X2 = 410
Арифметические операции с десятичными числами:
X1 + X2 = 9.625 + 4 = 13.625
X1 - X2 = 9.625 - 4 = 5.625
X1 / X2 = 9.625 / 4 = 2.40625
X1 * X2 = 9.625 * 4 = 38.5
Перевод результатов в двоичную систему счисления:
X1 + X2 = 1101.1012
X1 - X2 = 101.1012
X1 / X2 = 10.011012
X1 * X2 = 100110.12
6. Текст программы
program kr_var1;
uses
crt;
var
f1, f2:text;
code: integer;
x1, x2, chastn, rez1, rez2, summ, razn, proizv, summ_dv, razn_dv, proizv_dv, chastn_dv: real;
float: boolean;
const
tochn = 5;
function convertto10(x: real) : string;
var
st, r, rezult2, rezult, st1, st2: string;
dlina, p, s, n, t, u, h, code, des, x_cel, x_temp, i, temp: integer;
x_drob, t1, des_: real;
begin
i:= 0;
x_cel:= trunc(x);
x_drob:= x - x_cel;
str(x_cel, st);
dlina:= length(st);
n:= dlina;
u:= 0;
h:= 1;
t:= 1;
des:= 0;
for i:= 1 to dlina do
begin
r:= copy(st, n, 1);
n:= n - 1;
if u >= 1
then
for p:= 1 to u do
begin
h:= h * 2;
val(r, temp, code);
if i = 1
then
h:= 1;
end;
val(r, t, code);
t:= t * h;
u:= u + 1;
des:= des + t;
str(des, st1);
h:= 1;
t:= 1;
end;
str(x_drob, st);
u:= 1;
dlina:= length(st);
n:= dlina;
h:= 1;
t:= 1;
des:= 0;
if trunc(x) <> x
then
begin
for i:= 3 to dlina do
begin
r:= copy(st, i, 1);
if u >= 1
then
for p:= 1 to u do
h:= h * 2;
val(r, t1, code);
if t1 <> 0
then
t1:= t1 / h;
u:= u + 1;
des_:= des_ + t1;
h:= 1;
end;
end;
str(des_, st2);
st2:= copy(st2, 3, tochn);
convertto10:= st1 + '.' + st2;
end;
function convertto2(x: real) : string;
var
v, i, j, l, code, x_cel, x_drob, vd, nt, rezult1, x_temp: integer;
st3, st4, y, temp, r, rezult2: string;
x_dr: real;
begin
str(x, st3);
j:= length(st3);
nt:= 0;
for i:= 1 to j do
begin
temp:= copy(st3, i, 1);
nt:= nt + 1;
if temp = '.'
then
break;
end;
vd:= 1;
i:= 1;
for i:= nt to j-1 do
vd:= vd*10;
x_cel:= trunc(x);
x_dr:= x - x_cel;
st3:= '';
st4:= '';
while x_cel > 0 do
begin
v:= x_cel mod 2;
x_cel:= x_cel div 2;
str(v, y);
st3:= st3 + y;
end;
j:= length(st3);
i:= 0;
l:= j;
for i:= 1 to j do
begin
temp:= copy(st3, l, 1);
l:= l - 1;
st4:= st4 + temp;
end;
if trunc(x) <> x
then
begin
while (x_dr <> 1) do
begin
if x_dr > 1
then
x_dr:= x_dr - 1;
x_dr:= x_dr * 2;
x_temp:= trunc(x_dr);
str(x_temp, rezult2);
r:= r + rezult2;
end;
end;
convertto2:= st4 + '.' + r;
r:= '';
x_temp:= 0;
end;
procedure proverka_dv(x: real; var fl: boolean);
var
st, r: string;
dlina, v, code, n, i: integer;
begin
str(x, st);
dlina:= length(st);
n:= dlina;
fl:= true;
for i:= 1 to dlina do
begin
r:= copy(st, n, 1);
n:= n - 1;
if r <> '.'
then
begin
val(r, v, code);
if (v < 0) or (v > 1)
then
fl:= false;
end;
end;
if fl = false
then
begin
writeln('Ввод данных не корректен');
end;
end;
begin
clrscr;
assign(f1, 'C:\Users\Никита\Desktop\input.txt');
reset(f1);
assign(f2, 'output.txt');
rewrite(f2);
float:= true;
readln(f1, x1);
readln(f1, x2);
proverka_dv(x1, float);
if float = false
then
exit;
proverka_dv(x2, float);
if float = false
then
exit;
val(convertto10(x1), rez1, code);
val(convertto10(x2), rez2, code);
summ:= rez1 + rez2;
if rez1 > rez2
then
razn:= rez1 - rez2
else
razn:= rez2 - rez1;
chastn:= rez1/rez2;
proizv:= rez1*rez2;
val(convertto2(summ), summ_dv, code);
val(convertto2(razn), razn_dv, code);
val(convertto2(chastn), chastn_dv, code);
val(convertto2(proizv), proizv_dv, code);
writeln(f2, summ_dv);
writeln(f2, razn_dv);
writeln(f2, chastn_dv);
writeln(f2, proizv_dv);
Close(f1);
Close(f2);
end.
7. Листинг с результатами
Ввод:
1001.101
100
Вывод:
1101.10011111111
101.10011111111
10.0110011111111
100110.011111111
Заключение
Позиционная система счисления состоит в использовании ограниченного числа цифр, зато позиция каждой цифры в числе обеспечивает значимость (вес) этой цифры. Позиция цифры в числе на математическом языке называется разрядом.
Основание позиционной системы счисления это количество различных знаков или символов (цифр), используемых для отображения чисел в данной системе.
Для того чтобы двоичные числа, отличающиеся довольно значительной длиной, было легче воспринимать и отображать, их сжимают в восьмеричную и шестнадцатеричную системы счисления.
В компьютерных технологиях все виды информации кодируются только цифрами или, точнее, числами, которые представляются в двоичной системе счисления способе представления любых чисел с помощью двух знаков (цифр) по позиционному принципу.
Список литературы
Программирование. Основы алгоритмиизации и программирования. Н. И. Парфилова, А. Н. Пылькин, Б. Г. Трусов. Москва 2012.
Программирование. Структурирование программ и данных. Н. И. Парфилова, А. Н. Пылькин, Б. Г. Трусов. Москва 2012.
Системы счисления. 1987. Фомин С. В.
Размещено на http://www.allbest.ru
...Подобные документы
Общее представление о системах счисления. Перевод чисел в двоичную, восьмеричную и шестнадцатеричную системы счисления. Разбивка чисел на тройки и четверки цифр. Разряды символов числа. Перевод из шестнадцатеричной системы счисления в десятичную.
практическая работа [15,5 K], добавлен 19.04.2011Описание логической структуры программы "perevod" для перевода числа из одной системы счисления в другую. Блок-схема алгоритма обработчика события Button1Click. Разработка и испытание приложений. Назначение и условия применения программы, листинг.
курсовая работа [945,5 K], добавлен 03.01.2011Порождение целых чисел в позиционных системах счисления. Почему мы пользуемся десятичной системой, а компьютеры - двоичной (восьмеричной и шестнадцатеричной)? Перевод чисел из одной системы в другую. Математические действия в различных системах счисления.
конспект произведения [971,1 K], добавлен 31.05.2009Характеристика методов представления заданных чисел в двоичной, шестнадцатеричной, восьмеричной системе счисления. Представление указанного числа в четырехбайтовом IEEE формате. Разработка алгоритма обработки одномерных и двумерных числовых массивов.
контрольная работа [138,9 K], добавлен 05.06.2010Понятие и классификация систем счисления. Перевод чисел из одной системы счисления в другую. Перевод правильных и неправильных дробей. Выбор системы счисления для применения в ЭВМ. Навыки обращения с двоичными числами. Точность представления чисел в ЭВМ.
реферат [62,0 K], добавлен 13.01.2011Определение понятия и видов систем счисления - символического метода записи чисел, представления чисел с помощью письменных знаков. Двоичные, смешанные системы счисления. Перевод из одной системы счисления в другую и простейшие арифметические операции.
курсовая работа [232,6 K], добавлен 16.01.2012Разработка программы с использованием языка программирования Pascal для выполнения алгебраических действий с действительными числами без знака в шестнадцатеричной системе счисления. Описание хода выполнения, схема алгоритма, листинг программы, ее функции.
реферат [687,5 K], добавлен 28.10.2011Система счисления как способ записи (изображения) чисел. История появления и развития различных систем счисления: двоичная, восьмеричная, десятичная и шестнадцатеричная. Основные принципы и правила алгоритма перевода из одной системы счисления в другую.
курсовая работа [343,1 K], добавлен 11.11.2014Примеры правила перевода чисел с одной системы в другую, правила и особенности выполнения арифметических операций в двоичной системе счисления. Перевод числа с десятичной системы в двоичную систему счисления. Умножение целых чисел в двоичной системе.
контрольная работа [37,3 K], добавлен 13.02.2009Обработка информации и вычислений в вычислительной машине. Непозиционные и позиционные системы счисления. Примеры перевода десятичного целого и дробного числа в двоичную систему счисления. Десятично-шестнадцатеричное и обратное преобразование чисел.
контрольная работа [41,2 K], добавлен 21.08.2010Десятичная система счисления, ее происхождение и применение. Арифметические операции: сложение и вычитание, умножение и деление. Перевод чисел из одной системы счисления в другую. Применение систем: азбука Морзе, алфавитное кодирование, штрих-коды.
курсовая работа [2,5 M], добавлен 12.01.2015История систем счисления, позиционные и непозиционные системы счисления. Двоичное кодирование в компьютере. Перевод чисел из одной системы счисления в другую. Запись цифр в римской нумерации. Славянская нумерация, сохранившаяся в богослужебных книгах.
презентация [516,8 K], добавлен 23.10.2015Система счисления и перевод числа из одной системы в другую. Машинное предоставление информации. Числа с фиксированной точкой: прямой, обратный (инверсный) или дополнительный код. Программная реализация алгоритма и описание использованных процедур.
курсовая работа [96,7 K], добавлен 20.11.2010Понятие шестнадцатеричной системы счисления как позиционной с основанием "16", история ее внедрения. Символы и синтаксис использования, виды и правила перевода. Применение шестнадцатеричной системы счисления в цифровой электронике и компьютерной технике.
презентация [1,6 M], добавлен 05.05.2012Запись прямого и обратного кода для числа 10010 и -10010. Получение дополнительного кода числа для 16-разрядной ячейки. Перевод в двоичную систему счисления десятичных чисел: 10, 45, 7, 33. Запись в обратном и дополнительном кодах числа -67, -43, -89.
практическая работа [13,7 K], добавлен 19.04.2011Двоичный код, особенности кодирования и декодирования информации. Система счисления как совокупность правил записи чисел с помощью определенного набора символов. Классификация систем счисления, специфика перевода чисел в позиционной системе счисления.
презентация [16,3 K], добавлен 07.06.2011Предыстория чисел, связь названий чисел с определенной схемой счета. Системы счисления в Древнем Египте, Вавилоне, Греции, Риме, Америке, Китае, Индии, Аравии и Западной Европе. Обозначения чисел у древних евреев. Позиционные системы счисления.
реферат [34,3 K], добавлен 15.03.2013Разновидности систем счисления данных, особенности позиционной системы. Порядок перехода между основными системами счисления и реализации целочисленных операций. Представление отрицательных чисел. Представление отрицательных чисел в двоичном коде.
лабораторная работа [142,3 K], добавлен 06.07.2009Перевод числа из десятичной системы счисления в двоичную. Результат выполнения в TURBO PASKAL заданных функций и операций. Программа вычисления значений функции на языке PASKAL, блок-схема. Вычисление суммы и произведения всех элементов массива.
контрольная работа [66,6 K], добавлен 15.02.2013Организация средствами Microsoft Excel автоматического выполнения операций над представлениями чисел в позиционных системах счисления. Разработка электронных таблиц. Перевод чисел в десятичную систему счисления. Перевод из десятичной системы.
курсовая работа [27,2 K], добавлен 21.11.2007