Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 1 1

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 18.5.2024

1.   Лабораторная работа №1.

«Преобразование целых десятичных чисел в двоичный вид».

Выполненные работы необходимо присылать тьютору по адресу michnick@aspu.ru. Студенту необходимо выбрать себе один вариант и реализовать программу на любом языке компилируемом языке программирования. Тьютору предоставлять откомпилированный вариант и полные исходные тексты.

 

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

 

1.1                    Задание на лабораторную работу.

 

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

Программа должна поддерживать все целочисленные типы данных языка реализации (char, int, long int, unsigned int, unsigned long int для языка C/C++, integer, byte, word, shorting, longint для Pascal/Delphi).

Отрицательные числа выводятся в дополнительном коде.

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

Замечания:

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

Пример: -5:   5 = 00000101, -5 = not(5)+1 = 11111010+1 = 11111011

2.     Запрещается использовать для машинно-зависимые методы и библиотеки языков программирования.

1.     В качестве одного из вариантов решения предлагается следующие алгоритм на псевдоязыке:

 

program Translate1;

s : string;

begin

enter(a);

s:=’’;

while a<>0 do

  if  (abs(a) mod 2) then s:=’1’+s else s:=’0’+s;

  a:=abs(a) div 2;

end while;

if a<0 then

 mind:=0;

 for i:=1 to 8 do

   k:=val(s[8-i+1])+1+mind;

   s[8-i+1]:=k;

   if k=2 then begin

     s[8-i+1]:=’0’; mind:=1;

   endif  

   if k=3 then begin

     s[8-i+1]:=’1’; mind:=1;

   endif  

 endfor

 endif

end;

где div и mod  - операции целочисленного деления и деления по модулю соответственно.

 

program Translate1;

s : string;

begin

enter(a);

s:=’’;

while a<>0 do

  if  (abs(a) shr 1) and (1 shl (sizeof(a)+1) + 1) then s:=’1’+s else s:=’0’+s;

  a:=abs(a) shr 2;

end while;

if a<0 then

 mind:=0;

 for i:=1 to 8 do

   k:=val(s[8-i+1])+1+mind;

   s[8-i+1]:=k;

   if k=2 then begin

     s[8-i+1]:=’0’; mind:=1;

   endif  

   if k=3 then begin

     s[8-i+1]:=’1’; mind:=1;

   endif  

 endfor

 endif

end;

 

где shr и sizeof  - операции сдвига вправо и определения размера типа в битах соответственно.

Задание 1. Решение.

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

Dim d As Long, j As Integer, u As String    /// объявляем переменные

 For i = 0 To 31   ///на форме обнуляем массив двоичного числа

  Text2(i).Text = "0"

 Next

 If (Val(Text1.Text) >= -2147483648# And Val(Text1.Text) <= 2147483647 And

 Val(Text1.Text) <> 0) Then /// проверка на допустимые значения

 

 d = Val(Text1.Text) ///считываем число в переменную d

 i = 32

 While (d <> 0) /// и пока она не равна нулю делим на два с остатком

    i = i - 1

    If (d Mod 2) Then

      Text2(i).Text = "1"

    Else

      Text2(i).Text = "0"

    End If

    d = d \ 2

 Wend

       d = Val(Text1.Text) /// еще раз считываем число

      If d < 0 Then /// если оно отрицательно

      Invert_cod_For_dec_in_bin /// вызываем процедуру 

 End If

 Else: MsgBox "Vvedite celoi chislo -2.147.483.648 do 2.147.483.647!", vbOKOnly, "Oshibka"

 End If

Код процедуры Invert_cod_For_dec_in_bin :

Sub Inversia()

  For i = 31 To 0 Step -1 ///начинаем идти с конца массива и меняем нули на единицы и наоборот

    If Val(Text2(i).Text) = 0 Then

        Text2(i).Text = "1"

    Else

        Text2(i).Text = "0"

    End If

  Next i

                ///побайтовое прибавление единицы

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

  For i = 31 To 0 Step -1

    If Text2(i).Text = "0" Then

      Text2(i).Text = "1"

      For j = i + 1 To 31

         Text2(j).Text = 0

      Next

      Exit For

    End If

  Next i

End Sub

Задание 2. Решение.

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

Разработанный код:

Dim d As Long, j As Integer, u As String /// объявляем переменные

j = 0

d = 0

If Val(Text2(0).Text) = 0 Then ///если данное двоичное число положительно т.е. старший бит равен нулю, то переводим

For i = 31 To 0 Step -1

   Text1.Text = Val(Text1.Text) + (Val(Text2(i).Text) * 2 ^ j)

   j = j + 1

Next i

Else   ///если отрицательно

   Invert_cod_For_bin_in_dec   ///вызываем процедуру 

  d = 0

   j = 0

For i = 31 To 0 Step -1 ///формируем десятичное число в виде строки

   Text1.Text = Val(Text1.Text) + (mas(i) * 2 ^ j)

   j = j + 1

Next i

   u = "-" + Text1.Text ///помещаем знак минус вначале строки

  Text1.Text = u

End If

Код процедуры Invert_cod_For_bin_in_dec :

Dim mas(0 To 31) As Integer

Sub Inversia2()

  For i = 31 To 0 Step -1 ///начиная идти с конца массива, записываем каждый бит в массив mass и меняем нули на единицы и наоборот

    mas(i) = Val(Text2(i).Text)

    If mas(i) = 0 Then

        mas(i) = 1

    Else      mas(i) = 0

    End If

  Next i

             ///побайтовое прибавление единицы

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

  For i = 31 To 0 Step -1

    If mas(i) = 0 Then

      mas(i) = 1

      For j = i + 1 To 31

         mas(i) = 0

      Next

      Exit For

    End If

  Next i

End Sub




1. ТЕМА XIV Концепції держави і права в Україні 1
2. Обсуждение некоторых подробностей происхождения наших снов диктовалось тем что эта почва из которой про1
3. Информационное обеспечение природоохранной деятельности
4. Управление ресурсами предприятия
5. Туризм географиясы.html
6. метрологія походить від грецьких слів- metron міра і logos поняття
7. Бизнес-план на примере туристического предприятия.html
8. Years of UN peacekeeping efforts
9. 24~002]-63.21 Профілактика та лікування неспецифічної бронхопневмонії у телят із застосуванням цитом.
10. постепенная атрофия всех тканей половины лица
11. Термины
12. Несовершеннолетние преступники кто он
13. Сегментация коттеджных поселков Подмосковья п-п Хар
14. Человек и время ЛЮБОВЬ ПОСЛЕ ЛЮБВИ Настанет день когда увидев свое отражение в зеркале ты улыбне
15. тематика вариантов наименования дипломных работ 1
16. тематика Сказка Колобок
17. факто в дефолт деюре
18. ЮжноУральский институт управления и экономики А
19. Идеи к философии природы
20. материальных ценностей сырья материалов комплектующих изделий и полуфабрикатов запасами готовой прод