десетична
Целете се: създайте функция в Python за преобразуване от десетична в двоична и, като разширение, във всяка друга база.

Преобразуването на десетично число в двоично не е загадка в Python:

Дори обратният процес, от двоичен към десетичен, е прост:

Но благодатта, когато човек се научи да програмира, се опитва да развие шестото чувство алгоритмичен, често пренебрегван аспект.

Така че в днешната статия ще проектираме собствена функция, за която отговаряме преобразуване на десетично число в двоично, че по-късно ще продължим, за да го изразим в всяка друга база.

Откриването на основния алгоритъм често включва изпълнение на задачата на ръка обръщайки голямо внимание на нашите психични процеси, ги превърнете в думи и ги трансформира по-късно в инструкции собствен език за програмиране.

Примерът, който ни засяга, е прост, тъй като има практически пряка кореспонденция между нашия психичен процес и формално развитие, но не винаги има такъв и в тези случаи е необходимо да се атомизира какво минава през главата ни.

В училище ни учат (или поне са преподавали) на процедурата за преобразуване на положително цяло число в десетична основа в двоично:

Разделяме числото на две и записваме остатъка от делението. Взимаме коефициента и го разделяме на две, записвайки новия остатък. Взимаме новия коефициент и продължаваме същата операция, докато не можем да продължим, тъй като коефициентът вече е по-малък от два (един, в двоични преобразувания). След това вземаме този коефициент (един) и добавяме към него, в обратен ред на поява, всички останки, които сме записвали по пътя.

Нека преобразуваме, например, 81 в двоично:

Вече не можем да делим на две, тъй като коефициентът е един. Взимаме този коефициент, заедно с всички остатъци в обратен ред и намираме 81, изразени в двоично:

1010001

Нашият алгоритъм ще свърши работа точно същото.

Двоичната променлива е низ, който натрупва всеки остатък. Наблюдавайте конструкцията му, добавяйки наляво всяка нова почивка.

Десетичната променлива започва с оригиналното число, но във всяка итерация приема стойността на новия коефициент в резултат на целочисленото деление. Цикълът ще се повтаря непрекъснато, докато този коефициент е различен от нула. По това време предишният коефициент (единица) ще бъде цифрата най-значително на резултата, върнат с извлечението за връщане.

Нека видим тази функция в действие:

За да конвертирате в която и да е друга база, процедурата е абсолютно същата, с изключение на това, че вместо да извършим целочисленото деление на две, ние го правим в новата база.

А сега преобразуване в осмично:

За целите на тестването избягвайте да използвате бази, по-големи от 10, тъй като нямаме достатъчно цифри, за да покажем резултата. Или можете да модифицирате програмата и да създадете свои собствени цифри, като използвате букви от азбуката, както в шестнадесетичната система.

Предложено упражнение 1: създайте функция, която преобразува десетично число в база 16 (шестнадесетична). Ще ви трябва вид таблица, която трансформира резултатите от остатъка 10, 11, 12, ..., 15 в A, B, C, ..., F, съответно.

Предложено упражнение 2: създайте функция, която преобразува от двоична в десетична.

Предложено упражнение 3: създайте функция, която преобразува число, изразено във всяка друга база, в десетично.

Хавиер Монтеро Габаро

Текстът на тази статия е предмет на лиценза на Creative Commons от този тип CC-BY-NC-ND (потвърждение, нетърговско, без производни произведения, 3.0 неотнесено)

Клубът за самоуки

Вижте пълния индекс на статии, свързани с Python.