Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 25.10.2017
Сообщений: 119

Подсчёт количества нулей в битовой записи числа

25.05.2018, 22:49. Показов 6270. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Написал такую программу для подсчета нулей в двоичной записи числа:
Кликните здесь для просмотра всего текста

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "stdio.h"
#include "stdlib.h"
 
int cnt(int n) {
    int c=0;
    if(n == 0) c++;
    while(n) {
        if(!(n&1)) c++;
        n>>=1;
    }
    return c;
}
 
int main(int argc, char *argv[]) {
    long int c;
    if(argc < 2){puts("Error1"); return 0;}
    if(strtol(argv[1], NULL, 0) < 0){puts("Error2"); return 0;}
    c=cnt(strtol(argv[1], NULL, 0));
    printf("Kol-vo nuley - %d", c);
    return 0;
}

Но в моей реализации есть ограничение для числа - оно не может быть больше 230. Делаю больше - ответ не правильный. Как можно решить задачу например для 8 байтового числа?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2018, 22:49
Ответы с готовыми решениями:

Циклы: подсчет количества нулей в двоичной записи данного числа
Есть задание: &quot;Дано натуральное число n. Посчитайте количество нулей в двоичной записи этого числа.&quot; Нужно выполнять строго с...

Перевод числа из 10 в 16 систему счисления и подсчет количества нулей
stkseg segment stack db 256 dup (?) stkseg ends data segment mes1 db 'Vvedite chislo v 10-sisteme (0..65535):',0ah,0dh,'$' ...

Подсчет нулей в записи числа
Составьте программу, подсчитывающую количество нулей в записи натурального числа N.

29
Злостный нарушитель
 Аватар для Verevkin
10883 / 5822 / 1288
Регистрация: 12.03.2015
Сообщений: 26,874
26.05.2018, 23:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Байт Посмотреть сообщение
Не писать же вместо "i++" - "i = i+1;"
Действительно. Я так даже на Delphi не пишу.
0
 Аватар для Kukuxumushu
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
27.05.2018, 03:28
Чтож вы творите-то, люди?...
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
#include <stdio.h>
#include <conio.h>
 
int Zeros(int N)
{
int Z=sizeof(N)*8;
for(int i=0;i<sizeof(N)*8;i++)
 {
 Z-=N&1;
 N>>=1;
 }
return Z;
}
 
 
int main()
{
int N;
printf("N=");
scanf("%d",&N);
printf("Z=%d\n",Zeros(N));
getch();
return 0;
}
0
Злостный нарушитель
 Аватар для Verevkin
10883 / 5822 / 1288
Регистрация: 12.03.2015
Сообщений: 26,874
27.05.2018, 09:01
Цитата Сообщение от Kukuxumushu Посмотреть сообщение
Чтож вы творите-то, люди?...
А шо не так-то?
0
1 / 1 / 0
Регистрация: 25.10.2017
Сообщений: 119
27.05.2018, 10:54  [ТС]
Kukuxumushu, С числами больше 2^32 данная программа будет работать?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.05.2018, 10:57
Цитата Сообщение от AbraHa Посмотреть сообщение
С числами больше 2^32 данная программа будет работать?
Какая? Из поста 22? Конечно, нет!
Автор этого поста не уловил суть проблемы
0
1 / 1 / 0
Регистрация: 25.10.2017
Сообщений: 119
27.05.2018, 11:04  [ТС]
Verevkin, спасибо большое за объяснения
Байт, Мое решение в седьмом посте сойдёт? А то так и никто не оценил)

Добавлено через 2 минуты
И да, было еще одно условие: "Ввод исходных данных через параметры командной строки"
0
Злостный нарушитель
 Аватар для Verevkin
10883 / 5822 / 1288
Регистрация: 12.03.2015
Сообщений: 26,874
27.05.2018, 11:05
Цитата Сообщение от AbraHa Посмотреть сообщение
спасибо большое за объяснения
Не помогло? Значит я этот трактатЪ писал впустую, да?
0
1 / 1 / 0
Регистрация: 25.10.2017
Сообщений: 119
27.05.2018, 11:28  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Значит я этот трактатЪ писал впустую, да?
Конечно не впустую, что вы. Очень даже помогло.
Но мне еще хочется услышать оценку на свой код, который в седьмом сообщении.
0
Злостный нарушитель
 Аватар для Verevkin
10883 / 5822 / 1288
Регистрация: 12.03.2015
Сообщений: 26,874
27.05.2018, 11:48
Цитата Сообщение от AbraHa Посмотреть сообщение
Конечно не впустую, что вы. Очень даже помогло.
А... ну лан.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
27.05.2018, 22:31
Цитата Сообщение от AbraHa Посмотреть сообщение
Байт, Мое решение в седьмом посте сойдёт?
Имхо, нормальное решение. Но я правда не знаю, как определен __int64. Со знаком он или без. И как работает atoi64 в этом смысле. Все проблемы на границе представимости (>262) именно от этой трактовки. То есть как воспринимается старший бит. Как знак или как цифра.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.05.2018, 22:31

Подсчет нулей в двоичной записи числа
Всем доброго времени суток !!! Задание следующее: Мы вводим число в 8-й системе, надо перевести его в 2-ю и посчитать кол-во нулей ...

Определение количества нулей в двоичной записи числа
Определить, сколько нулей в двоичной записи произвольного числа А (100&lt;А&lt;1000)?

Быстрый подсчёт количества выставленных бит после битовой операции
Допустим есть два числа, выглядящие в бинарном виде так: 1. 00101011 2. 10101000 делаю операцию AND, то есть 00101011 &amp; ...

Подсчет количества различных значащих цифр в десятичной записи числа
Здравствуйте уважаемы форумчане! Помогите решить задачу: составить программу подсчета количества различных значащих цифр в десятичной...

Множества: подсчет количества различных значащих цифр в десятичной записи числа
Надо решить эту задачу по теме :множества Составить программу подсчета количество различных значащих цифр в десятичной записи...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru