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

Количество единичных битов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Середи всех шестизначных чисел проверить и подсчитать колличество "счастливых" билетов http://www.cyberforum.ru/cpp-beginners/thread108007.html
1.Середи всех шестизначных чисел проверить и подсчитать колличество "счастливых" билетов. 2.Цех по ремонту бітовой техники имеет ежедневно прибыль Р, из которого платит налог а% С части прибыли,...
C++ C++.Програми лінейної структури 1.Серед всiх шестизначних чисел перевiрити i порахувати кiлькiсть "щасливих "квiткiв. 2.Цех з ремонту побутовоi технiки мае щодня прибуток Р,з якого платить податок а%.З частки прибутку,що... http://www.cyberforum.ru/cpp-beginners/thread108000.html
C++ текстовой редактор
дайте текст текстового редактора!!!!!!!!!
Элементы одномерного массива A (n^2) разместить в матрице B (n, n) по строкам C++
Элементы одномерного массива A (n^2) разместить в матрице B (n, n) по строкам Заранее спасибо!
C++ Регулярные циклы в С/С++ http://www.cyberforum.ru/cpp-beginners/thread107983.html
Ребята, помогите решить задачку на С/С++, очень нужно Располижить в массиве Pol сначала положительные, а потом отрицательные элементы выходящего массива. Дан массив А(9) Добавлено через 31...
C++ матрица 6 на 8 Дана матрица 6х8 символьного типа. Создать другой массив, содержащий элементы исходного массива, не являющиеся цифрами или латинскими буквами. Перегрузить написанные функции для работы с... подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт CЭксперт С++
9664 / 5614 / 952
Регистрация: 25.07.2009
Сообщений: 10,778
24.03.2010, 16:02
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
#include <stdio.h>
#include <limits.h>
#include <windows.h>
 
/* возвращает количество установленных битов */ 
size_t bitsCount(unsigned long val){
    size_t i, cnt;
    for ( i = cnt = 0; i < CHAR_BIT * sizeof(long); ++i )
        if ( val & 1 << i )
            ++cnt;
    return cnt;
}
 
/* возвращает число в двоичном виде как строку */
char *bin(unsigned long val){
    static char buf[CHAR_BIT * sizeof(long) + 1] = { 0 };
    char *p;
    int i;
    for ( p = buf, i = CHAR_BIT * sizeof(long) - 1; i >= 0; --i )
        *p++ = ( val >> i & 1 ) + '0';
    return buf;
}
 
int main(void){
    unsigned long val;
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    while ( 1 ){
        printf("Число (0 - выход): ");
        if ( scanf("%lu", &val) != 1 || !val )
            break;
        printf("В двоичном виде: %s\n", bin(val));
        printf("Установленных битов: %d\n", bitsCount(val));
    }
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru