3. Переведите число AD45F из шестнадцатиричной в десятиричную систему 4. Тип пользователя пятого поколения ЭВМ 5. Перечислите элементы графического интерфейса Информатика 10 класс
Так как число знаковое и имеет знаковый бит, то результат будет иметь отрицательный знак
Получилось: AD45EF16 =-296702310
Переведем число -296702310 в двоичное вот так:
Целая часть числа находится делением на основание новой системы счисления:
2967023 2
-2967022 1483511 2
1 -1483510 741755 2
1 -741754 370877 2
1 -370876 185438 2
1 -185438 92719 2
0 -92718 46359 2
1 -46358 23179 2
1 -23178 11589 2
1 -11588 5794 2
1 -5794 2897 2
0 -2896 1448 2
1 -1448 724 2
0 -724 362 2
0 -362 181 2
0 -180 90 2
1 -90 45 2
0 -44 22 2
1 -22 11 2
0 -10 5 2
1 -4 2 2
1 -2 1
0
Перевод чисел из одной системы счисления в другую
В результате преобразования получилось:
-296702310 = 10110101000101111011112
Вы указали что размер вашего числа 1 байт.
Уберем лишние биты с учётом знакового бита вот так:
10110101000101111011112 = 111011112
Так-как введенное Вами число отрицательное то необходимо перевести его из прямого кода в дополнительный.
Для этого сначала выполним преобразование из прямого кода в обратный инвертированием всех битов кроме знакового, затем получим прямой код добавлением 1 бита.
// PascalABC.NET 3.1, сборка 1198 от 11.03.2016 begin var k:=0; var Terminate:boolean; repeat Terminate:=True; var n:=ReadInteger('Введите номер месяца:'); case n of 1,3,5,7,8,10,12:Writeln('31 день'); 4,6,9,11:Writeln('30 дней'); 2:Writeln('28 дней в обычном году и 29- в високосном') else begin Writeln('Вы ошиблись, номер должен быть от 1 до 12'); Inc(k); Terminate:=False end end until Terminate; if k>0 then Writeln('Вы ошиблись ',k,' раз(а).') end.
Тестовое решение: Введите номер месяца: 18 Вы ошиблись, номер должен быть от 1 до 12 Введите номер месяца: 0 Вы ошиблись, номер должен быть от 1 до 12 Введите номер месяца: 5 31 день Вы ошиблись 2 раз(а).
Const n=10; m=5; var a:array[1..n,1..m+1] of integer; i,j,k,sp,s:integer; begin Randomize; writeln(' Результаты соревнований'); for i:=1 to n do begin s:=0; for j:=1 to m do begin a[i,j]:=random(50)+50; write(a[i,j]:4); s:=s+a[i,j]; end; a[i,m+1]:=s; writeln(s:5); end; write('k='); readln(k); sp:=0; for i:=1 to n do if a[i,m+1]>=k then sp:=sp+1; writeln('sp=',sp); end.
Данный перевод возможен двумя : прямой перевод и через десятичную систему.
Сначала выполним прямой перевод.
Выполним прямой перевод из шестнадцатиричной в двоичную вот так:
AD45EF16 = A D 4 5 E F = A(=1010) D(=1101) 4(=0100) 5(=0101) E(=1110) F(=1111) = 1010110101000101111011112
Окончательный ответ: AD45EF16 = 1010110101000101111011112
Теперь выполним перевод через десятичную систему счисления.
Выполним перевод в десятичную систему счисления вот так:
Знаковый бит в переводе не участвует!
2∙165+13∙164+4∙163+5∙162+14∙161+15∙160 = 2∙1048576+13∙65536+4∙4096+5∙256+14∙16+15∙1 = 2097152+851968+16384+1280+224+15 = 296702310
Так как число знаковое и имеет знаковый бит, то результат будет иметь отрицательный знак
Получилось: AD45EF16 =-296702310
Переведем число -296702310 в двоичное вот так:
Целая часть числа находится делением на основание новой системы счисления:
2967023 2
-2967022 1483511 2
1 -1483510 741755 2
1 -741754 370877 2
1 -370876 185438 2
1 -185438 92719 2
0 -92718 46359 2
1 -46358 23179 2
1 -23178 11589 2
1 -11588 5794 2
1 -5794 2897 2
0 -2896 1448 2
1 -1448 724 2
0 -724 362 2
0 -362 181 2
0 -180 90 2
1 -90 45 2
0 -44 22 2
1 -22 11 2
0 -10 5 2
1 -4 2 2
1 -2 1
0
Перевод чисел из одной системы счисления в другую
В результате преобразования получилось:
-296702310 = 10110101000101111011112
Вы указали что размер вашего числа 1 байт.
Уберем лишние биты с учётом знакового бита вот так:
10110101000101111011112 = 111011112
Так-как введенное Вами число отрицательное то необходимо перевести его из прямого кода в дополнительный.
Для этого сначала выполним преобразование из прямого кода в обратный инвертированием всех битов кроме знакового, затем получим прямой код добавлением 1 бита.
1 1 1 0 1 1 1 1 прямой код
1 0 0 1 0 0 0 0 обратный код
+ 1 +1 бит
1 0 0 1 0 0 0 1 дополнительный код
Окончательный ответ: AD45EF16 = 100100012 (1 байт)
удачи