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

Напишите программу, которая определяет, сколько единиц содержится в двоичном представлении переменной типа char - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Что значит вычислить значение функции с заданной точностью? http://www.cyberforum.ru/cpp-beginners/thread987206.html
Например, дана функция cosx/x и какая-либо точность. Как вычислить значение функции с заданной точностью? Нужен скорее не сам код (но для примера было б неплохо), а алгоритм, т.е. что вообще требуется сделать. Спасибо!
C++ Программа вылетает при запуске из консоли ( утечка) Добрый день. Столкнулся с интересной проблемой. Написал программу(см.ниже, в ней две небольших утечки - см.ниже). При фиксированных параметрах argv программа работает корректно. При задании же параметров с коммандной строки возникает Expression: CrtIsValidHeapPointer связанный скорре всего с какой то из утечек. Вот код: main.cpp #include "sort.h" #include "storage.h" //#include <vld.h>... http://www.cyberforum.ru/cpp-beginners/thread987199.html
Компилирование библиотеки dll из cxx и h файлов C++
реально-ли скомпилировать dll библиотеку из с++(шных) файлов написаных под Unix?
Найти все меньшие N из числел Мерсена C++
Дано натуральное число N. Найти все меньшие N из числел Мерсена. Простое число называется числом Мерсена, если оно может быть представлено в виде 2p-1, где p – тоже простое число.
C++ Нужно сделать, чтобы в Edit можно было вводить не более 3-х символов http://www.cyberforum.ru/cpp-beginners/thread987192.html
Нужно сделать, чтобы в Edit можно было вводить не более 3-х символов
C++ Вывести текст в конце программы Итак, у меня есть программа, которая множит числа на числа и находит некоторые нужные для меня числа. И задача состоит в том, что потом их нужно вывести все вместе в конце. Нужно вывести все значения v==i в конце программы, мои криворуки это сделать не могут._. int a,b,c; int v; int k; for(int i=100; i<1000; i++) { for(int j=2; j<101; j++) { a=i/100; b=i/10-a*10;... подробнее

Показать сообщение отдельно
gromo
 Аватар для gromo
366 / 265 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
24.10.2013, 23:53     Напишите программу, которая определяет, сколько единиц содержится в двоичном представлении переменной типа char
Цитата Сообщение от Legion88 Посмотреть сообщение
Почему мы используем именно 128?
Извините, но черт его знает... Во-первых, никогда не пользуйтесь побитовыми операциями над знаковыми типами. Здесь вы используете тип char, который может быть signed char/unsigned char (на усмотрение компилятора, чаще всего signed char). ТАк вот, в тип signed char значение 128 не вместится.
Цитата Сообщение от Legion88 Посмотреть сообщение
2) Как нам помогает собственно деление на 2 в реализации?
деление на 2 это по сути сдвиг двоичного представления числа на 1 ячейку вправо. И когда мы в условии в 4-й строчке "поймаем" единичку в числе, то прибавим единичку к счетчику единичек.


И почему условие окончания цикла i > 1 ? ведь так мы не поймаем последнюю единичку. Вы вообще запускали эту программу ? Она же выдает постоянно 1...

вот исправленная версия, сравните, что я изменил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int f(unsigned char c) {
  int r = 0;
  for(unsigned int i = 128; i > 0; i /= 2)
      if( c & i) r++;
  return r;
}
 
int main() {
    unsigned int a;
    unsigned char c;
    scanf("%d", &a);
    c = a;
    printf("%u \n", f(c));
    return 0;
}
И вообще почитайте о побитовых операциях - материал не обширный, а такое беглое объяснение может породить больше вопросов, чем ответов. Поймите принцип битовых манипуляций.
Как-то так.
 
Текущее время: 18:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru