![](/user_photo/_userpic.png)
Программные преобразования числовой информации (96
..pdfVar 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