Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 45, средняя оценка - 4.69
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
#1

Количество нулей в двоичной записи числа - C++

30.03.2010, 18:19. Просмотров 5851. Ответов 5
Метки нет (Все метки)

Мне нужно посчитать количество нулей в двоичной записи числа.
Как стандартными функциями можно получить двоичное представление числа, а потом посчитать количество нулей, или, может быть, с помощью вставок на assembler?

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

Кто-нибудь знает как это сделать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2010, 18:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество нулей в двоичной записи числа (C++):

Определение количества нулей в двоичной записи числа - C++
Определить, сколько нулей в двоичной записи произвольного числа А (100<А<1000)?

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах - C++
Дано натуральное число N (N > 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах. Пример. N = 10 025...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах - C++
#include <iostream> #include<conio.h> main() { setlocale(LC_ALL, "Russian"); int N,digit = 0; int count = 0; std::...

Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах (Pascal -> С++) - C++
Var i: longint; N: integer; begin write('input Nomber, pleeeaaase: '); readln(i); N:= 0; while ((i mod 10) = 0) do ...

Количество нулей в записи числа - C++
Помогите пожалуйста написать эдакое... Дано натуральное число n. Подсчитать количество нулей в записи данного числа в десятичной системе...

Найти количество нулей в конце записи факториала числа - C++
Найти количество нулей в конце записи факториала числа n. Подскажет, кто алгоритм? Или хотя бы в какую сторону копать? Если приведете...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Nick Alte
Эксперт С++
1637 / 1009 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
30.03.2010, 19:13 #2
Тебе помогут битовые операции.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int Bits1(unsigned long number)  /* Считает количество единиц*/
{
    unsigned long n = number;
    int i = 0, r = 0;
    for(; i<8*sizeof(n); i++, n>>=1)
        if(i&1)
            r++;
    return r;
}
 
int Bits0(unsigned long number)   /* Считает количество нулей */
{
    return Bits1(~number);
}
1
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
30.03.2010, 20:02  [ТС] #3
В таком виде программа не работает. Нужно условие в строке 6 заменить на
C++
1
2
if (n & 1)
...
Я немного ошибся, нужно получить число нулей в конце двоичного представления числа.
Стандартных функции скорее всего нет, но можно делать как в примере.
Спасибо!
0
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
31.03.2010, 11:05 #4
Двоичное число .....100000
Просто перебираем биты с самого младшего, пока не наткнемся на 1 или число закончится.
Если число закончится - значит все биты равны 0 - это число 0, можем проверить отдельно.
0
Hell Knight
230 / 60 / 3
Регистрация: 11.03.2010
Сообщений: 290
31.03.2010, 11:16 #5
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
__asm
{
push eax
push ecx
mov ecx, 8
mov ah, 1b
xor al, al
again:
test number, ah
jz again2
inc al
again2:
shl ah, 1
loop again
pop ecx
pop eax
}
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
31.03.2010, 17:40  [ТС] #6
Я уже сделал.
Но всё равно спасибо.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2010, 17:40
Привет! Вот еще темы с ответами:

Функция, которая для чисел от 0 до n выводит все числа, которые в двоичной записи являются палиндромами - C++
написать функцию, которая для чисел от 0 до n выводит все числа, которые в двоичной записи являются палиндромами. то есть читаются...

Среди всех n-битных двоичных чисел указать количество тех, в двоичной записи которых нет k единиц подряд - C++
Помогите пожалуйста понять в чём ошибка! Задание такое: среди всех n-битных двоичных чисел указать количество тех, у которых в двоичной...

Простые числа и количество нулей - C++
Задание: Нужно ввести число N с клавиатуры. Вывести на экран простые числа до N. И среди них найти число с максимальным числом нулей. При...

Найти все натуральные числа, меньшие N, в записи которых содержаться K подряд идущих нулей - C++
помогите решить!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
31.03.2010, 17:40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru