Мы для записи чисел используем десятичную систему счисления. Каждая из 10 цифр (от 0 до 9) означает количество вхождений в число соответстсвуюей степени десятк.
К примеру, запись 1492 означает: 1 тысяча, 4 сотни, 9 десятков и 2 единицы. 
1492=2*100+9*101+4*102+1*103
Память компьютера устроена так, что каждая её ячейка может находиться только в двух состояниях: ток есть или тока нет. Поэтому для хранения чисел впамяти компьютера используется система записи чисел только цифрами 0 и 1 – двоичная система счисления. При этом каждой цифре соответствует не степень десятки, как у нас, а степень двойки.
Чтобы перевести число из двоичной в десятичную систему счисления в десятичную, нужно каждый его разряд умножить на соответстсвующую степень двойки, и сложить результаты.
Пример:
Число (1001011)2 = 1*20+1*21+0*22+1*23+0*24+0*25+1*26 = 1+2+8+64=(75)10
Число (10011010)2 = 0*20+1*21+0*22+1*23+1*24+0*25+0*26+1*27 = 2+8+16+128=(154)10
Составим алгоритм перевода чисел из двоичной системы в десятичную.
Нам понадобятся следующие переменные:
N – то число, которое будем переводить
K – последняя цифра числа N
D – номер текущего шага (он будет определять, на какую степень двойки будем умножать)
S – результат перевода числа в десятичную систему
Запишем непосредственно шаги лагоритма.
Пункт 1. Попросить ввести число N // Ведь если не узнать, что за число мы переводим, работа не имеет смысла
Пункт 2. D=0 и S=0 // Это мы инициализируем переменные (присваиваем им начальные значения). Т.к. шагов ещё не было сделано нисколько, и результат ещё не получен, то D и S будут равны нулю.
Пункт 3. Находим K, последнюю цифру числа N
Пункт 4. Увеличиваем число сделанных шагов
Пункт 5. Добавляем к результату S величину K*2D-1 //2 возводится в степень D-1, т.ек. на первом шагу мы 2 возводим в нулевую степень, на 2м шагу – в первую, и т.д.
Пункт 6. Отбрасываем послеДнюю цифру числа N // Действительно, она ведь уже отработала и нам больше не нужна.
Пункт 7. Если в числе N ещё остались цифры, то возвращаемся к п.3 алгоритма.
Пункт 8. Напечатать число S
Соответстсвующая программа на Бейсике выглядит так:
Просим человека ввести число
10 PRINT “VVEDITE 4ISLO”
Запоминем его в памяти
20 INPUT N
Задаём начальные значения для D и S
30 D=0: S=0
Эта строка находит последнюю цифру числа N. Выражение INT(N/10) даёт число N с отброшенной последней цифрой, 10*INT(N/10) – число, в котором все цифры такие же, как и у N, только на последнем месте стоит 0. соответственно, разность N-10*INT(N/10) оставит только последнюю цифру числа N
40 K=N-10*INT(N/10)
Увеличиваем на 1 счётчик шагов
50 D=D+1
Добавляем результат произведение последней цифры на соответстсвующую степень двойки.
60 S=S+K*2^(D-1)
Теперь отбрасываем последнюю цифру числа N
70 N=INT(N/10)
Если в N ещё остались цифры, возвращаемся к шагу 3 алгоритма, который находится у нас в 40 строке.
80 IF N<>0 THEN GOTO 40
90 PRINT S
Задания:
С помощью этой программы переведите в десятичную систему числа 10011, 1110001, 1100100.
Составьте таблицу изменения значений переменных в случае, если пользователь ввёл число 10101
Ка изменить эту программу, чтобы она перевеодила в десятичную систему числа, записанные с троичной системе? (Троичная система использует только цифры 0, 1 и 2, и разряды в неё умножаются на степени тройки)
Теперь решим обратную задачу: перевод числа, записанного в десятичной системе счисления – в двоичную.
Допустим, нам дано число 1492. Делим его на 2 с остатком:
1492:2 = 746 (остаток 0)
Будем продолжать делить число на 2
746:2 = 373 (остаток 0)
373:2 = 186 (остаток 1)
186:2 = 93 (остаток 0)
93:2 = 46 (остаток 1)
46:2 = 23 (остаток 0)
23:2 = 11 (остаток 1)
11:2 = 5 (остаток 1)
5:2 = 2 (остаток 1)
2:2 = 1 (остаток 0)
1:2 = 0 (остаток 1)
Теперь запишем эти остатки, начиная с последнего, и заканчивая первым:
(1492)10=(10111010100)2
Можем проверить:
(10111010100)2 = 1*4+1*16+1*64+1*128+1*256+1*1024=(1492)10
Таким образом, вырисовывается алгоритм перевода числа из десятичной системы счисления в двоичную. 
Нам понадобятся переменные:
N – число, которе нужно перевести
R – остаток от деления N на 2
D – номер текущего шага
S – результат перевода
Будем его писать алгоритм параллельно с программой.
Пункт 1. Ввести чсло N
10 PRINT “VVEDITE 4ISLO”
20 INPUT N
Пункт 2. Задаём начальные значения переменных
30 S=0: D=0:
Пункт 3. Находим остаток от деления числа N на 2
40 R = N – 2*INT(N/2)
Пункт 4. Увеличиваем номер текущего шага
50 D = D+1
Пункт 5. Добавляем к результату новый остаток
60 S = S+R*10^(D-1)
Пункт 6. Вместо N рассматриваем его неполное ачастное от деления на 2
70 N = INT(N/2)
Пункт 7 Если в N ещё остались цифры, возвращаемся к п.3
80 IF N<>0 THEN GOTO 40
Выводим на экран S
90 PRINT S
Задания: 
Найти с помощью программы двоичные представления числе 1024, 256, 123.
Составьте таблицу изменения значений переменных в случае, если пользователь ввёл число 35.
Измените программу так, чтобы она выдала список двоичных записей всех числе от 1 до 32.
Измените программу так, чтобы она перводила числа не в двоичную, а в тоичную систему счисления.
Решения должны быть в конспекте, также высылайте их на почту aviglau@gmail.com
Немає коментарів:
Дописати коментар