Как найти разряды чисел информатика

Уважаемые коллеги, мы рады предложить вам, разрабатываемый нами учебный курс по программированию ПЛК фирмы Beckhoff с применением среды автоматизации TwinCAT. Курс предназначен исключительно для самостоятельного изучения в ознакомительных целях. Перед любым применением изложенного материала в коммерческих целях просим связаться с нами. Текст из предложенных вам статей скопированный и размещенный в других источниках, должен содержать ссылку на наш сайт heaviside.ru. Вы можете связаться с нами по любым вопросам, в том числе создания для вас систем мониторинга и АСУ ТП.


Системы счисления

Уважаемые коллеги, эта статья будет полностью состоять из теории, мы рассмотрим системы счисления. При чтении этой статьи вы познакомитесь с двоичной и шестнадцатеричной системами счисления. Возможно, кому-то из читателей материал по системам счисления и переводу чисел из одной системы в другую может показаться сложным или скучным. Однако автор настоятельно рекомендует понять хотя бы их базовые принципы, так как в области программирования ПЛК, как и во многих других сферах программирования, они все еще достаточно актуальны и часто требуются на практике.

Бит, байт и размер данных

В прошлых статьях, когда мы рисовали схемы на языке LD, мы использовали тип данных BOOL. BOOL — это простейший тип данных, который может принимать всего два значения: 0 и 1, они же FALSE и TRUE и содержит в себе количество информации, соответствующее одному биту. Бит — это наименьшее количество информации. Один бит равен количеству информации, получаемой в результате осуществления одного из двух равновероятных событий. Например, выпадение орла или решки при бросании монетки. Помимо бита для обозначения количества информации применяют понятие байта. В современных системах обычно имеют в виду, что байт состоит из восьми бит. При записи в качестве единицы измерения биты записываются как «бит», а байты как «Б», например, 8 бит, 16 Б. Как и для других единиц измерения, для записи количества информации перед единицей измерения используются десятичные приставки СИ. Кроме того, для битов и байтов используют двоичные приставки.

Иногда при написании десятичных приставок имеются в виду двоичные, то есть при записи 1 КБ имеется в виду 1,024 Б. Такое использование приставок формально хоть и не является корректным, но очень часто встречается на практике.

Также стоит отметить, что иногда под словом байт подразумевается размер регистров процессора, то есть количество бит, которое процессор может обрабатывать за раз. Размер регистров процессора называется разрядность (или битность) процессора. Из контекста всегда можно понять, что имеется в виду: 8 бит или один разряд процессора. Современные процессоры, работающие под управлением Windows, имеют разрядность в 32 или 64 бита.

Системы счисления

Наверное, всем известно, что компьютеры оперируют данными в виде единиц и нолей. Такая система счисления называется двоичной позиционной. Система счисления — это способ записи цифр. Двоичная система наиболее удобна для применения в электронных схемах. Нулю соответствует отсутствие напряжения, единице — его наличие, или наоборот, в электронике достаточно часто единице соответствует отсутствие напряжение, нулю его наличие.

История знает попытки создания компьютеров на основе других систем счисления. Например, советский компьютер Сетунь, который использовал троичную систему счисления, или американский Mark I с десятичной системой. Но какого-либо серьезного распространения компьютеры, основанные на системах счисления, отличных от двоичной, не получили.

ЭВМ Сетунь

Системы счисления делятся на позиционные, непозиционные и смешанные:

  • Позиционные системы счисления — системы счисления, в которых значение каждого числового знака (цифры) в записи числа зависит от его позиции (разряда). Например, рассмотрим число 321, 3 — означает количество сотен, 2 — количество десятков, 1 — количество единиц. Так, арабская система счисления, которой все мы пользуемся в повседневной жизни, является десятичной позиционной системой. Обратим внимание на слово «десятичная». В данном примере оно связано с основанием системы счисления, а именно количеством знаков, используемых для записи числа в той или иной системе. В десятичной системе для записи используются цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Основанием является число 10.
  • Смешанные системы счисления, — системы счисления, в которых числа, заданные в некоторой системе счисления с основанием P, изображаются с помощью цифр другой системы счисления с основанием Q, где Q<P. Наиболее известным примером смешанной системы счисления является представление времени в виде количества суток, часов, минут и секунд.
  • Непозиционные системы счисления — системы счисления, в которых величина, обозначаемая цифрой, не зависит от положения в числе. При этом система может накладывать ограничения на положение цифр, например, чтобы они были расположены в порядке убывания. Примерами непозиционных счисления являются римская, египетская и система остаточных классов.

Далее в этой статье речь пойдет только о позиционных системах счисления. Как говорилось выше, в компьютерах применяют двоичную позиционную систему счисления. Для начала давайте разберемся, что такое число и чем оно отличается от цифры. Число используется для счета и выражает количество. Цифры — это набор знаков для записи чисел. В арабской системе счисления цифрами являются знаки 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, в двоичной — 0 и 1. Каждая цифра в записи числа, называется разрядом. В информатике разряд числа считается справа налево, начиная с нуля. При записи в десятичной системе числа 435 цифра 5 является нулевым разрядом, цифра 3 — первым, цифра 4 — вторым разрядом.

Двоичная система счисления имеет основание 2, то есть в ней используется всего две цифры: 0 и 1. Числа ноль и один в десятичной и в двоичной системах выглядят абсолютно одинаково и записываются как 0 и 1 соответственно. А вот цифры 2 в двоичной системе нет, поэтому приходится добавить еще один разряд, число два в двоичной системе будет записываться как 10. Что бы записать число три, надо добавить к двойке единицу, выглядит это так 11. Для записи числа четыре снова надо добавить еще один разряд, в результате получаем 100. Пять записывается как 101 и так далее.

Десятичная Двоичная
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111
16 1,0000
Шестнадцатеричная система счисления

Двоичная система весьма неудобна для восприятия человеком. Например, число 131, записанное в двоичной системе, будет выглядеть как 1000,0011, а число 14,732 соответствует записи 1,1100,11000,1100. Для более удобного восприятия человеком числа часто представляют в шестнадцатеричной системе счисления. Переводить числа из одной системы счисления в другую мы научимся позже в этой статье.

Как и в других позиционных системах счисления, принцип записи чисел в шестнадцатеричной системе схож с рассмотренной выше двоичной системой и всем знакомой с детства десятичной. Разница лишь в том, что следующей после цифры 9 идет A (десятичная 10), а новый разряд добавляется после цифры F (десятичная 15). В шестнадцатеричной системе счисления для записи используются следующие цифры:

Десятичная цифра Шестнадцатеричная цифра
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 A
11 B
12 C
13 D
14 E
15 F

Применение именно шестнадцатеричной системы обусловлено легкостью перевода данных в нее из двоичной и обратно, а также наглядностью записи, которая обусловлена тем, что один разряд шестнадцатеричного числа эквивалентен четырем разрядам двоичного числа. То есть байт двоичного кода записывается ровно двумя цифрами шестнадцатеричного числа. Число 131, в двоичной системе выглядит как 1000,0011, а в шестнадцатеричной 83. Причем четыре старших разряда двоичного числа 1000 записываются шестнадцатиричной 8, а четыре младших разряда двоичного числа 0011 записываются шестнадцатеричным числом 3.

В этой статье мы используем сразу три системы счисления. Не всегда можно понять, какая система счисления применяется для записи числа, если это не указанно явно. Например, цифры 11 могут означать три в двоичной системе, одиннадцать в десятичной и семнадцать в шестнадцатеричной. Во избежание путаницы, в математике принято указывать основание применяемой системы счисления в виде индекса после записанного числа. К примеру, запись 11_2 означает, что применена двоичная система. Если индекс не указан предполагается что применена десятичная система.

При написании программ достаточно часто возникает необходимость указать в какой системе счисления записано число. В языках МЭК это делается с помощью префиксов добавляемых к числу.

Префикс Система счисления
2# двоичная
8# восьмеричная
отсутствует десятичная
16# шестнадцатеричная

То есть двоичное число 11_2 в TwinCAT записывается как 2#11.

Восьмеричная система хоть и поддерживается в TwinCAT, но в настоящее время почти не используется. Изложенного выше материала должно быть достаточно для ее понимания.

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

В сети материала со строгим изложением теоретических выкладок по переводу чисел из одной системы счисления в другую достаточно много. Здесь мы рассмотрим лишь один из удобных на практике способов перевода чисел между различными системами, несильно вдаваясь в теорию этого процесса.

В позиционных системах счисления любое число можно представить в виде x=displaystylesum_{k=0}^{n-1} a_k*b^k где: b — основание системы счисления. a_k — числа, равные цифре, стоящей в разряде k.

Выглядит сложно, но на практике довольно просто, число 483 можно представить в виде:

483= (4*100)+(8*10)+(3*1)= (4*10^2)+(8*10^1)+(3*10^0)

Кстати, именно из-за такой формы записи разряды чисел считают, начиная с нуля, а не с единицы.

Число ​11,0011_2 (десятичное 51)​ можно представить в виде:

11,0011_2= 10,0000_2+1,0000_2+10_2+1_2= (1*2^5)+(1*2^4)+(1*2^1)+(1*2^0)

Вспомнив, что 1*2^5=32; 1*2^4=16; 1*2^1=2; 1*2^0=1 можно продолжить выражение.

11,0011_2= (1*2^5)+(1*2^4)+(1*2^1)+(1*2^0)= 32+16+2+1=51

Можно заметить, что достаточно запомнить, какое десятичное значение соответствует каждому двоичному разряду и просуммировать их при переводе.

Номер
разряда
Двоичное
значение
Десятичное
значение
0 1_2 1
1 10_2 2
2 100_2 4
3 1000_2 8
4 1,0000_2 16
5 10,0000_2 32
6 100,0000_2 64
7 1000,0000_2 128
8 1,0000,0000_2 256

Для перевода из двоичной системы в десятичную и обратно приведенную выше таблицу следует выучить наизусть.

Давайте решим несколько примеров для закрепления:

1001,0011_2= 1000,0000_2 + 1,0000_2 + 10_2 + 1_2 = 128+16+2+1=147

1111,1000_2 = 1000,0000_2 + 100,0000_2 + 10,0000_2 + 1,0000_2 + 1000_2 = 128 + 64 + 32 + 16 + 8 = 248

100,0001_2 = 100,0000_2 + 1_2 = 64 + 1 = 65

1100,0000 = 1000,0000_2 + 100,0000_2 = 128 + 64 = 192

Перевод из десятичной системы в двоичную производится следующим образом: из десятичного числа вычитается ближайшее меньшее число, из только что выученной нами наизусть таблицы, и записывается соответствующие ему двоичное, после чего действие повторяется с остатком. Когда остатка не осталось, суммируем все записанные двоичные числа.

Приведем пример с числом 147:

  1. Ближайшее меньшее к 147 число из таблицы 128. Записываем 1000,0000_2. Остатком будет 147 - 128 = 19.
  2. Повторяем действие. Ближайшее к 19 число из таблицы — 16. Пишем 1,0000_2. Остаток 19 - 16 = 3.
  3. Ближайшее к 3 число 2. Записываем 10_2. Остаток 3 - 2 = 1.
  4. Числу 1 соответствует число 1_2, его и записываем.
  5. В результате предыдущих действий мы получили числа 1000,0000_2, 1,0000_2, 10_2, 1_2. После сложения получится 1001,0011_2.

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

Перевод чисел из двоичной системы в шестнадцатеричную и обратно

В целом порядок перевода в десятичную и в шестнадцатиричную систему схожи. Главное отличие в том, таблица перевода будет повторяться каждые четыре строчки, так как 16=24. Таким образом, выучив всего четыре строчки, вы сможете переводить числа любого размера.

Номер
разряда
Двоичное
значение
Шестнадцатеричное
значение
0 1_2 1_{16}
1 10_2 2_{16}
2 100_2 4_{16}
3 1000_2 8_{16}
4 1,0000_2 10_{16}
5 10,0000_2 20_{16}
6 100,0000_2 40_{16}
7 1000,0000_2 80_{16}
8 1,0000,0000_2 100_{16}

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

Повторим некоторые примеры, которые мы приводили для десятичной системы:

1001,0011_2= 1000,0000_2 + 1,0000_2 + 10_2 + 1_2 = 80_{16}+10_{16}+2_{16}+1_{16}=93_{16}

1111,1000_2 = 1000,0000_2 + 100,0000_2 + 10,0000_2 + 1,0000_2 + 1000_2 = 80_{16} + 40_{16} + 20_{16} + 10_{16} + 8_{16} = F8_{16}

Перевод из шестнадцатеричной системы в двоичную производится аналогично переводу из десятичной в двоичную, но проще, так как производится группами по 4 бита. Напомним, из шестнадцатеричного числа вычитается ближайшее меньшее число из таблицы перевода между двоичными и шестнадцатеричными числами, после чего действие повторяется с остатком. После того, как остатка не будет, суммируем все записанные двоичные числа.

Приведем пример с числом 93_{16} (десятичное 147):

  1. Ближайшее меньшее к 93_{16} число из таблицы 80_{16}, записываем 1000,0000_2. Остатком будет 93_{16}-80_{16} = 13_{16}.
  2. Повторяем действие, ближайшее к 13_{16} число из таблицы — 10_{16}, записываем 1 0000_2. Остаток 13_{16}-10_{16} = 3_{16}.
  3. Ближайшее к 3_{16} число — 2_{16}, записываем 10_2. Остаток 3_{16}-2_{16} = 1_{16}.
  4. Числу 1_{16} соответствует число 1_2, его и записываем.
  5. В результате предыдущих действий мы получили числа 1000,0000_2, 1,0000_2, 10_2, 1_2. После сложения получится 1001,0011_2.

Еще один простой способ перевода чисел между системами счисления – это использование стандартного калькулятора в Windows (предварительно необходимо переключить в режим «Программист»).

Переключение калькулятора в режим «Программист»

Хотя такой способ может показаться соблазнительным, но стоит научиться переводить в уме числа хотя бы до одного байта (как читатель теперь уже может убедиться самостоятельно, в один байт можно записать числа в диапазоне от 0 до 255). С приобретением практики это станет не сложнее умножения двузначных чисел.


1. Порядковый счет в различных системах счисления.

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

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

Поскольку у нас десятичная система счисления, мы имеем 10 символов (цифр) для построения чисел. Начинаем порядковый счет: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Цифры закончились. Мы увеличиваем разрядность числа и обнуляем младший разряд: 10. Затем опять увеличиваем младший разряд, пока не закончатся все цифры: 11, 12, 13, 14, 15, 16, 17, 18, 19. Увеличиваем старший разряд на 1 и обнуляем младший: 20. Когда мы используем все цифры для обоих разрядов (получим число 99), опять увеличиваем разрядность числа и обнуляем имеющиеся разряды: 100. И так далее.

Попробуем сделать то же самое в 2-ной, 3-ной и 5-ной системах (введем обозначение rm X_2 для 2-ной системы, rm X_3 для 3-ной и т.д.):

rm X_{10} rm X_2 rm X_3 rm X_5
0 0 0 0
1 1 1 1
2 10 2 2
3 11 10 3
4 100 11 4
5 101 12 10
6 110 20 11
7 111 21 12
8 1000 22 13
9 1001 100 14
10 1010 101 20
11 1011 102 21
12 1100 110 22
13 1101 111 23
14 1110 112 24
15 1111 120 30

Если система счисления имеет основание больше 10, то нам придется вводить дополнительные символы, принято вводить буквы латинского алфавита. Например, для 12-ричной системы кроме десяти цифр нам понадобятся две буквы (rm A и rm B):

rm X_{10} rm X_{12}
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 rm A
11 rm B
12 10
13 11
14 12
15 13

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

Чтобы перевести целое положительное десятичное число в систему счисления с другим основанием, нужно это число разделить на основание. Полученное частное снова разделить на основание, и дальше до тех пор, пока частное не окажется меньше основания. В результате записать в одну строку последнее частное и все остатки, начиная с последнего.

Пример 1. Переведем десятичное число 46 в двоичную систему счисления.

Перевод

46=101110_2

Пример 2. Переведем десятичное число 672 в восьмеричную систему счисления.

Перевод

672=1240_8

Пример 3. Переведем десятичное число 934 в шестнадцатеричную систему счисления.

Перевод

rm 934=3A6_{16}

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

Для того, чтобы научиться переводить числа из любой другой системы в десятичную, проанализируем привычную нам запись десятичного числа.
Например, десятичное число 325 – это 5 единиц, 2 десятка и 3 сотни, т.е.

325_{10}=5+2 cdot 10 + 3 cdot 100.

Точно так же обстоит дело и в других системах счисления, только умножать будем не на 10, 100 и пр., а на степени основания системы счисления. Для примера возьмем число 1201 в троичной системе счисления. Пронумеруем разряды справа налево начиная с нуля и представим наше число как сумму произведений цифры на тройку в степени разряда числа:

3;2;1;0
1;2;0;1_3=1 cdot 3^0 + 0 cdot 3^1 + 2 cdot 3^2 + 1 cdot 3^3=1+0+18+27=46
1;2;0;1_3=1 cdot 3^3 + 2 cdot 3^2 + 0 cdot 3^1 + 1 cdot 3^0=27+18+0+1=46

Это и есть десятичная запись нашего числа, т.е. 1201_3 = 46_{10}.

Пример 4. Переведем в десятичную систему счисления восьмеричное число 511.

511_8=5 cdot 8^2+1 cdot 8^1+1 cdot 8^0=5 cdot 64+1 cdot 8+1=329
511_8=329_{10}.

Пример 5. Переведем в десятичную систему счисления шестнадцатеричное число 1151.

1 cdot 16^3+1 cdot 16^2+5 cdot 16^1+1 cdot 16^0=1 cdot 4096+1 cdot 256+5 cdot 16+1=4096+256+80+1=4433.
1151_{16}=4433_{10}.

4. Перевод из двоичной системы в систему с основанием «степень двойки» (4, 8, 16 и т.д.).

Для преобразования двоичного числа в число с основанием «степень двойки» необходимо двоичную последовательность разбить на группы по количеству цифр равному степени справа налево и каждую группу заменить соответствующей цифрой новой системы счисления.

Например, Переведем двоичное 1100001111010110 число в восьмеричную систему. Для этого разобьем его на группы по 3 символа начиная справа (т.к. 8=2^3), а затем воспользуемся таблицей соответствия и заменим каждую группу на новую цифру:

1 100 001 111 010 110_2
1 4 1 7 2 6_8

Таблицу соответствия мы научились строить в п.1.

rm X_{2} rm X_8
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7

Т.е. 1100001111010110_2 = 141726_8.

Пример 6. Переведем двоичное 1100001111010110 число в шестнадцатеричную систему.

rm X_{2} rm X_{16}
0 0
1 1
10 2
11 3
100 4
101 5
110 6
111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

rm 1100001111010110_2 = 1100;0011;1101;0110_2 = C3D6_{16}.

5.Перевод из системы с основанием «степень двойки» (4, 8, 16 и т.д.) в двоичную.

Этот перевод аналогичен предыдущему, выполненному в обратную сторону: каждую цифру мы заменяем группой цифр в двоичной системе из таблицы соответствия.

Пример 7. Переведем шестнадцатеричное число С3A6 в двоичную систему счисления.

Для этого каждую цифру числа заменим группой из 4 цифр (т.к. 16=2^4) из таблицы соответствия, дополнив при необходимости группу нулями вначале:
rm C_{16}=1100_2
rm 3_{16}=0011_2
rm A_{16}=1010_2
rm 6_{16}=0110_2

rm C3A6_{16}=1100;0011;1010;0110_2.

Благодарим за то, что пользуйтесь нашими статьями.
Информация на странице «Системы счисления. Перевод из одной системы в другую.» подготовлена нашими авторами специально, чтобы помочь вам в освоении предмета и подготовке к экзаменам.
Чтобы успешно сдать нужные и поступить в ВУЗ или колледж нужно использовать все инструменты: учеба, контрольные, олимпиады, онлайн-лекции, видеоуроки, сборники заданий.
Также вы можете воспользоваться другими статьями из разделов нашего сайта.

Публикация обновлена:
08.05.2023

Перейти к содержанию

Определить количество разрядов числа

Просмотров 13.1к. Обновлено 15 октября 2021

Написать функцию, которая определяет количество разрядов введенного целого числа.

Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго — 3, после третьего — 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.

Для реализации данного алгоритма следует использовать цикл «пока» (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть «больше нуля».

Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.

Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.

Pascal


var num: longint;

function digits (n:longint): byte;
var i: byte;
begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;

begin
write ('Введите число: ');
readln (num);
if num<0 then num:=abs(num);
writeln ('Количество разрядов = ', digits(num));
end.



Введите число: -98
Количество разрядов = 2

Язык Си


#include < stdio.h>
int digits (int);

main() {
int num;
scanf("%d",&num);
printf("%dn", digits(num));
}

int digits(int n) {
int i;
if (n < 0) n = -n;
while (n > 0) {
n = n/10;
i += 1;
}
return i;
}



3543
4

Python

количество разрядов в числе Python


def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return i

num = abs(int(input('Введите число: ')))
print('Количество разрядов:', digits(num))



Введите число: 65098234
Количество разрядов: 8

КуМир


алг колич_разрядов
нач
цел num
ввод num
вывод разряды(num)
кон

алг цел разряды(цел n)
нач
цел i, m
m := n
i := 0
если m < 0 то m := -m всё
нц пока m > 0
m := div(m,10)
i := i+1
кц
знач := i
кон



-562
3

Basic-256


input num
gosub digits
end

digits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num 10
i = i + 1
endwhile
print i
return



-7823342
7

Оглавление:

  • 1 Задача — Определить количество разрядов числа
    — программирование на Pascal, Си, Кумир, Basic-256, Python

    • 1.1 Pascal
    • 1.2 Язык Си
    • 1.3 Python
    • 1.4 КуМир
    • 1.5 Basic-256

Задача — Определить количество разрядов числа
— программирование на Pascal, Си, Кумир, Basic-256, Python

Написать функцию, которая определяет количество разрядов введенного целого числа.

Чтобы программно посчитать количество разрядов числа, необходимо последовательно его делить нацело на 10, пока это число не станет равным нулю. При этом считать количество делений. Например, дано число 345. После первого деления останется 34, после второго — 3, после третьего — 0. Таким образом, мы видим, что количество делений равно количеству разрядов числа.

Для реализации данного алгоритма следует использовать цикл «пока» (while). Условием его выполнения является неравенство числа нулю. Хотя, если вводятся только положительные числа или перед этим отрицательное число превращают в положительное, в условии может быть «больше нуля».

Перед циклом вводится переменная-счетчик (например, i), которой присваивается значение 0 и которая при каждом делении заданного числа внутри цикла увеличивается на единицу. После завершения деления именно ее значением будет определяться количество разрядов числа.

Поскольку надо написать функцию, то скорее всего эта функция должна принимать заданное число, а возвращать количество разрядов.

Pascal

var num: longint;

function digits (n:longint): byte;
var i: byte;
begin
i := 0;
while n > 0 do begin
n := n div 10;
i := i + 1
end;
digits := i
end;

begin
write (‘Введите число: ‘);
readln (num);
if num<0 then num:=abs(num);
writeln (‘Количество разрядов = ‘, digits(num));
end. Введите число: -98
Количество разрядов = 2

Язык Си

#include <stdio.h>
int digits (int);

main() {
int num;
scanf(«%d»,&num);
printf(«%dn», digits(num));
}

int digits(int n) {
int i;
if (n < 0) n = -n;
while (n > 0) {
n = n/10;
i += 1;
}
return i;
} 3543
4

Python

def digits(n):
i = 0
while n > 0:
n = n//10
i += 1
return i

num = abs(int(input(‘Введите число: ‘)))
print(‘Количество разрядов:’, digits(num)) Введите число: 65098234
Количество разрядов: 8

КуМир

алг колич_разрядов
нач
цел num
ввод num
вывод разряды(num)
кон

алг цел разряды(цел n)
нач
цел i, m
m := n
i := 0
если m < 0 то m := -m всё
нц пока m > 0
m := div(m,10)
i := i+1
кц
знач := i
кон -562
3

Basic-256

input num
gosub digits
end

digits:
if num < 0 then num = abs(num)
i = 0
while num > 0
num = num 10
i = i + 1
endwhile
print i
return -7823342
7

Did you find apk for android? You can find new Free Android Games and apps.

На чтение 3 мин Просмотров 790 Опубликовано 02.03.2023

Содержание

  1. Введение
  2. Длинный способ с циклом while
  3. Короткий способ циклом for
  4. Самый быстрый способ
  5. Заключение

Введение

В ходе статьи рассмотрим три вариации кода для определения количества разрядов в ведённом пользователем числе на языке программирования Python.

Длинный способ с циклом while

Дадим пользователю возможность ввести число:

n = int(input('Введите число: '))

Если было введено отрицательное число, нужно его сделать положительным. Для этого добавим его в модуль методом abs():

n = int(input('Введите число: '))
n = abs(n)

Добавим переменную count равную нулю:

n = int(input('Введите число: '))
n = abs(n)

count = 0

Создадим цикл while, который не закончится, пока n > 0. В цикле будем убирать последнюю цифру в переменной n, а к count прибавлять единицу:

n = int(input('Введите число: '))
n = abs(n)

count = 0

while n > 0:
    n //= 10
    count += 1

Осталось вывести результат:

n = int(input('Введите число: '))
n = abs(n)

count = 0

while n > 0:
    n //= 10
    count += 1

print(count)

# Введите число: 164832
# 6

Короткий способ циклом for

Обычно подобным не занимаются при помощи цикла for, но почему бы и нет. Как и в предыдущем способе даём пользователю возможность ввода числа, и добавляем его в модуль. Также создаём переменную count равную нулю:

n = abs(int(input('Введите число: ')))
count = 0

Создадим цикл for, в котором пройдёмся по количеству символов в переменной n. Внутри цикла прибавляем к count единицу:

n = abs(int(input('Введите число: ')))
count = 0

for i in range(len(str(n))):
    count += 1

Выведем результат в консоль:

n = abs(int(input('Введите число: ')))
count = 0

for i in range(len(str(n))):
    count += 1

print(count)

# Введите число: 111
# 3

Самый быстрый способ

Как и в предыдущих способах даём пользователю возможность ввода числа, и добавляем его в модуль:

n = abs(int(input('Введите число: ')))

Теперь в переменную count сохраним длину значения преобразованного в строковый тип данных в переменной n:

n = abs(int(input('Введите число: ')))
count = len(str(n))

Выведем результат:

n = abs(int(input('Введите число: ')))
count = len(str(n))

print(f'В числе {n} находится {count} разрядов.')

# Введите число: 17424312
# В числе 17424312 находится 8 разрядов.

Заключение

В ходе статьи мы с Вами разобрали целых 3 способа определить количество разрядов в числе в Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin

Понравилась статья? Поделить с друзьями:
  • Как найти телефон самсунг программа
  • Как найти гистограмму в excel
  • Как найти дочке хорошего мужа
  • Как найти свой соляр
  • Как найти отношение объемов двух шаров