Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программные преобразования числовой информации (96

..pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
342 Кб
Скачать

Var nm:byte; ch:char;

begin

If n>15 Then HexInt (n div 16,s); nm:= n mod 16;

If nm <10 Then ch:=Chr(nm+Ord('0')) Else ch:= Chr(nm+Ord('A')-10);

s:=s+ch;

end;

Procedure WriteHex(s:string;n:cardinal); var

st:string; begin

HexInt(n,st); st:=s+'$'+st; Writeln(st);

end; Function

FloatFixed (ff:Single;size,point:byte):cardinal; var

m,m1,t,bs:cardinal;

n:cardinal;

s,a,r,i,p:byte;

g:rCardSingl; begin

g.f:=ff;

If g.w=0 Then begin

Result:=0;

Exit;

end;

Writeln(‘size=’,size);

Writeln(‘point=’,point);

BinaryInt('f=',g.w,32); t := g.w and $7F800000; BinaryInt('t=',t,32);

r := t shr 23; BinaryInt('r=',r,8); a := r shr 7; BinaryInt('a=',a,8);

31

p:= r and $7F + a;

 

BinaryInt('p=',p,8);

 

s := p and $7F;

 

If p and $B0 <>0 Then s := not p;

 

BinaryInt('s=',s,8);

 

m := g.w and $7FFFFF;

 

BinaryInt('m=',m,32);

 

m1 := m or $800000;

 

BinaryInt('m1=',m1,32);

 

If s and $80 > 0 Then

 

Else

n := m1 shr (23-(point+1)+s)

n := m1 shr (23-(point+1)-s);

If g.w and $80000000 >0 Then

 

begin

 

 

bs:=1;

 

For i:=0 To size-2 Do

 

bs := bs shl 1;

 

n := n or bs;

 

end;

 

 

BinaryInt('n=',n,32);

 

Result := n;

 

end;

 

 

begin

 

 

Write('f=');Readln (f);

Readln;

WriteHex('x=',FloatFixed(f,12,3));

End.

 

 

Если после запуска программы Prog5 ввести число – 6,25, то на мониторе появится следующий результат:

f = -6.25 size = 12 point = 3

f = 11000000110010000000000000000000 t = 01000000100000000000000000000000 r = 10000001

a = 00000001 p = 00000010 s = 00000010

m = 00000000010010000000000000000000

32

m1= 00000000110010000000000000000000 n = 00000000000000000001000001100100 x = $864

Теперь проверим программу Prog5 для числа –1,25:

f = -1.25 size = 12 point = 3

f = 10111111101000000000000000000000 t = 00111111100000000000000000000000 r = 01111111

a = 00000000 p = 01111111 s = 10000000

m = 00000000001000000000000000000000 m1= 00000000101000000000000000000000 n = 00000000000000000001000000010100 x = $814

Для числа без целой части – 0,25 результат будет следующим:

f = -0.25 size = 12 point = 3

f = 10111110100000000000000000000000 t = 00111110100000000000000000000000 r = 01111101

a = 00000000 p = 01111101 s = 10000010

m = 00000000000000000000000000000000 m1= 00000000100000000000000000000000 n = 00000000000000000000000000000100 n = 00000000000000000001000000000100 x = $804

Во всех рассмотренных примерах в качестве вещественного типа фигурировал четырехбайтный тип Single. Если подобные операции необходимо применить к другим типам, например Real,

33

размер которого составляет 8 байт, то вместо типа rCardSingl следует использовать иной комбинированный тип, например:

Type

rCardReal = Record 0:(n1,n2:cardinal); 1:(f:real);

end;

а процедуру BinaryInt();применять последовательно к внутренним переменным n1,n2.

34

СПИСОК ЛИТЕРАТУРЫ

1.Каган Б.М. Электронные вычислительные машины и системы. М.: Энергоатомиздат, 1991. 592 с.

2.Керман М.К. Программирование и отладка в Delphi: Учеб. курс: Пер. с англ. М.: Издат. дом «Вильямс», 2004. 720 с.

35

 

ОГЛАВЛЕНИЕ

 

 

Введение .........................................................................................

3

1.

Позиционные системы счисления .................................................

3

2.

Перевод чисел в позиционных системах счисления .....................

5

3.

Форматы представления чисел ......................................................

7

4.

Операции преобразования двоичных кодов .................................

8

5.

Программная реализация алгоритмов .........................................

11

6.

Битовая конструкция переменной типа single ........................

15

7.

Моделирование преобразований single – integer .............

19

8.

Моделирование преобразований integer – single ..............

22

9.

Преобразование числа из фиксированного вещественного

 

 

формата в число типа single ...................................................

25

10. Преобразование чиста типа single в число

 

 

с фиксированным вещественным форматом ..............................

30

Список литературы ...........................................................................

35

36

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]