Как найти разрядность числа

Разберемся в разрядности чисел: пошаговая инструкция

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

Шаг 1: Определение разрядности единичного числа

Единичное число — это число, которое состоит только из одной цифры (от 0 до 9). Для определения разрядности единичного числа нужно знать следующие правила:

  • Любое единичное число от 0 до 9 имеет 1 разряд
  • Число 0 не имеет разрядности, так как не относится к положительным числам.

Шаг 2: Определение разрядности числа с несколькими цифрами

Для определения разрядности числа с несколькими цифрами, необходимо считать количество цифр в числе. Например, для числа 123 разрядность будет определена следующим образом:

  • Единицы: цифра 3
  • Десятки: цифра 2
  • Сотни: цифра 1

Таким образом, число 123 имеет 3 разряда: сотни, десятки и единицы.

Шаг 3: Определение разрядности дробного числа

Дробное число состоит из десятичной точки и знаков после нее. Для определения разрядности дробного числа нужно считать количество знаков после десятичной точки. Например, для числа 3,14159 разрядность будет определена следующим образом:

  • Целая часть: цифры 3 и 1
  • Десятичная точка: знак «.»
  • Дробная часть: цифры 1, 4, 1, 5, и 9

Таким образом, число 3,14159 имеет 5 разрядов после десятичной точки.

Вывод

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

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

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

Просмотров 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

King_IgorEfimoV

1 / 1 / 0

Регистрация: 18.04.2011

Сообщений: 9

1

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

05.07.2011, 08:25. Показов 40173. Ответов 13

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

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

C++
1
2
3
4
5
6
7
8
9
10
int searchrazryad(long int N)
{
int razryad=0;
for (N%10>10;)
    N/10;
        razryad+=1;
        printf("Kolichestvo razrayadov = %d", &razryad);
 
return razryad;
}



0



ValeryLaptev

Эксперт С++

1067 / 846 / 60

Регистрация: 30.04.2011

Сообщений: 1,659

05.07.2011, 08:30

2

Ну хоть книжку-то почитай, как на С++ пишется…

C++
1
2
3
4
5
int i = 0; 
while(N>0)
{ N = N / 10; ++i;
}
cout << i << endl;



1



1 / 1 / 0

Регистрация: 18.04.2011

Сообщений: 9

05.07.2011, 08:32

 [ТС]

3

не подскажите еще случаем, как это в виде функции оформить? ( .h )



0



diagon

Higher

1953 / 1219 / 120

Регистрация: 02.05.2010

Сообщений: 2,925

Записей в блоге: 2

05.07.2011, 08:38

4

ValeryLaptev, а как же отрицательные числа?

C++
1
2
3
4
5
6
size_t capacity(int n){
    size_t i = 0;
    for (; n ; n /= 10)
        ++i;
    return i;
}



3



Bogdan1986

0 / 0 / 0

Регистрация: 10.11.2015

Сообщений: 5

10.11.2015, 13:48

5

все работает, определяет разрядность 32 разрядного числа и делит и находит (2^30)/x

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
int x=1024; 
int a=x; 
int n=0; 
int b=0; 
int sum=0; 
int c=1; 
int sum2=0; 
 
 
 
 
if((16)>0) 
{ 
a=(16); 
n=n+16; 
} 
if((8)>0) 
{ 
a=(8); 
n=n+8; 
} 
if((4)>0) 
{ 
a=(4); 
n=n+4; 
} 
if((2)>0) 
{ 
a=(2); 
n=n+2; 
} 
if((1)>0) 
{ 
a=(1); 
n=n+1; 
} 
if(a==1) 
{ 
a=(1); 
n=n+1; 
} 
 
b=(30-n); 
c=(30-n); 
 
for(int i=0;i<(30-n);i++) 
{ 
 
if(1073741824-(sum+b)>0) 
{ 
sum=b+sum; 
sum2=c+sum2; 
} 
 
b=1; 
c=1; 
 
} 
 
 
System.out.println(sum2); 
System.out.println(n);

Добавлено через 28 минут
будем добавлять до миллиона скажем
14 — 0 сумма 999 982
28 — 0 сумма 999 982
56 — 1 сумма 999 982
112-0 сумма 999 926
224-0 сумма 999 926
448-0 сумма 999 926
896 -0 сумма 999 926
1792-0 сумма 999 926
3584 -1 сумма 996342 + 3584 = 999 926
7168 -1 сумма 989 174+7168 = 996 342
14 336 — 1 сумма 974 838+14 336 = 989 174
28 672 -0
57 334 — 1 сумма 917 504+57 334=974 838
114 688 — 0
229 376 — 0
458 752 — 0 сумма 917 504 так как 917 504+458 752 больше миллиона
917 504 — 1 сумма 917 504
1 835 008 — 0 число уже больше милиона сумма 0

итак смотрите снизу вверх
получаем число
10001011100000100 — вот такое вот число
переведем его из двоичного в десятиричное
получили число 71 428
и теперь если умножить 71 428 на 14 получим 999 992
с точностью до шестого знака
и при таких вычислениях мы не применяли умножений только суммы
и разности



0



77 / 13 / 11

Регистрация: 23.10.2015

Сообщений: 83

10.11.2015, 15:15

6

к слову самый быстрый способ узнать число десятичных цифр — это сравнить по-очереди с числами 9, 99, 999, 9999… Если речь не идет о каких-то специфических процессорах



0



Dimension

594 / 462 / 223

Регистрация: 08.04.2014

Сообщений: 1,710

10.11.2015, 15:23

7

спустя 4 года британские ученые нашли ответ на вопрос King_IgorEfimoV

Добавлено через 1 минуту

Цитата
Сообщение от ishellstrike
Посмотреть сообщение

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

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



0



0 / 0 / 0

Регистрация: 10.11.2015

Сообщений: 5

10.11.2015, 16:04

8

Вобщето нет , для 32 разрядного числа как видишь 6 проверок
а для 64 разрядного будет 7
посмотри внимательнее этот способ куда быстрее чем проверять 9 , 99 …
так как у 64 разрядного числа уже 19 знаков , а значит надо будет целых 19 проверок
в то время как в моем случае это будет всего 7

Добавлено через 1 минуту
да и не всегда нужно проверять разрядность именно десятичного, чаще нужно проверить именно двоичную разрядность

Добавлено через 12 минут
ты даже не обратил внимание на тот факт что тут произведено деление 16 разрядного числа помещенного в 32 разрядное
1 умножение +100 сумм = 132 суммы
16*16=256 т.е. разница в 2 и больше раз, да и точность в 32 разряда не малая
для простых процессоров таких как на видеокарте это ускорит паралельное деление в 2 раза для 32 разрядных
чисел где применяется только 16 разрядов
А если взять 64 разрядный процессор там 20 знаков есть место для шага
Число сумм возростет вдвое витоге это будет 164 суммы для 32 разрядов из 64
а 32*32 = 1024
1024/164 = 6.24 раз ускориться, это огромные числа с огромной точностью и в 6 раз быстрее



0



pproger

166 / 69 / 17

Регистрация: 22.03.2011

Сообщений: 196

10.11.2015, 16:30

9

King_IgorEfimoV,

C++
1
cout << to_string(abs(number)).length() << endl;



2



Bogdan1986

0 / 0 / 0

Регистрация: 10.11.2015

Сообщений: 5

10.11.2015, 16:34

10

да кстати я чета перебрал с суммами где их и не надо было
я еще подускорил алгоритм

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
int x=23876;
        int a=x;
        int n=0;
        int b=0;
        int sum=0;
        int c=1;
        int sum2=0;
        int k;
        
        
        
 
        if((a>>16)>0)
        {
        a=(a>>16);  
        n=n+16;
        }
        if((a>>8)>0)
        {
        a=(a>>8);   
        n=n+8;
        }
        if((a>>4)>0)
        {
        a=(a>>4);   
        n=n+4;
        }
        if((a>>2)>0)
        {
        a=(a>>2);   
        n=n+2;
        }
        if((a>>1)>0)
        {
        a=(a>>1);   
        n=n+1;
        }
        if(a==1)
        {
        a=(a>>1);   
        n=n+1;
        }
        
        b=x<<(30-n);
        c=c<<(30-n);
        
        for(int i=0;i<(30-n);i++)
        {
            
        if(1073741824-(k=sum+b)>0)  
        {
        sum=k;  
        sum2=c|sum2;
        }   
        
        b=b>>1; 
        c=c>>1;
        
        }
        
        
        System.out.println(sum2);
        System.out.println(n);



0



77 / 13 / 11

Регистрация: 23.10.2015

Сообщений: 83

10.11.2015, 16:51

11

Bogdan1986, Dimension, а вот и не быстрее



0



Dimension

594 / 462 / 223

Регистрация: 08.04.2014

Сообщений: 1,710

10.11.2015, 17:08

12

ishellstrike, статья с 13 минусами меня не впечатляет



0



77 / 13 / 11

Регистрация: 23.10.2015

Сообщений: 83

10.11.2015, 17:20

13

Dimension, в таком случае рекомендую самостоятельные тесты



0



Bogdan1986

0 / 0 / 0

Регистрация: 10.11.2015

Сообщений: 5

10.11.2015, 18:21

14

если ты хочешь только разрядность найти а 1/x не нужен то тебе только вот эта часть кода нужна

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int x=23876;
int a=x;
int n=0;
 
 
 
 
 
if((16)>0)
{
a=(16); 
n=n+16;
}
if((8)>0)
{
a=(8); 
n=n+8;
}
if((4)>0)
{
a=(4); 
n=n+4;
}
if((2)>0)
{
a=(2); 
n=n+2;
}
if((1)>0)
{
a=(1); 
n=n+1;
}
if(a==1)
{
a=(1); 
n=n+1;
}
 
 
 
 
 
 
System.out.println(n);



0



На чтение 3 мин Просмотров 789 Опубликовано 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

Ответы

Аватар пользователя Иван Полежаев

Для подсчета разрядности числа в Java можно использовать метод Math.log10(). Данный метод возвращает десятичный логарифм числа. Для получения разрядности числа нужно добавить 1 к значению логарифма и привести результат к типу int

Например:

int num = 12345;
int digitCount = (int) (Math.log10(num) + 1);
System.out.println("Разрядность числа " + num + " равна " + digitCount);

Результат выполнения программы:

Разрядность числа 12345 равна 5



1



0

Добавьте ваш ответ

Рекомендуемые курсы

14 часов

Старт в любое время

11 часов

Старт в любое время

Типы данных и основные конструкции языка Java: методы, условия, циклы; создание несложных программ

37 часов

Старт в любое время

Похожие вопросы

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