Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
alekopi
0 / 0 / 1
Регистрация: 03.04.2013
Сообщений: 8
#1

Поразрядные операторы,операторы сдвига - C++

11.04.2013, 22:47. Просмотров 368. Ответов 1
Метки нет (Все метки)

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
using namespace std;
int bitcount(unsigned x)
{
    int b;
    for(b=0;x!=0;x>>=1)
        if(x&01)
            b++;
    return b;
}
void main()
{
    int i=3;
    cout<<bitcount(i);
}
я понимаю что выполняет эта функция - считает количество единичных битов в двоичном представлении числа i
Но как это все происходит пошагово в цикле и что там делается в каждом шаге я не понимаю
я не понимаю эти поразрядные операторы - читал в учебниках про них, но все равно не могу представить подробно что в цикле происходит
в байте - 8 бит т.е. там как то цикл for пробегает всегда 8 раз ,но как он там и в каком месте сравнивает единички и нули я не могу понять и почему именно один байт, если во время определения переменной i в каком то месте памяти выделяется 4 байта для хранения встроенного типа данных int а не один
извините за свои корявые изложения мыслей т.к. скорей всего кое-где криво и неправильно выразился в своем сообщении потому-что изучаю Си не больше месяца.
Объясните пожалуйста что в цикле for происходит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2013, 22:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Поразрядные операторы,операторы сдвига (C++):

Поразрядные операторы сдвига
Всем хорошо известно, что поразрядные операторы сдвига &gt;&gt; и &lt;&lt; сдвигают все...

Поразрядные операторы
Здравствуйте, объясните мне практическую ценность поразрядных операторов, не...

Поразрядные операторы + небольшая шифропрограммка
Начинаю изучать поразрядные операторы (и, или, исключающее или, не). В...

С++.Операторы в С++: условные операторы, операторы break и continue
Выяснить, пересекаются ли параболы у=аx2+bx+с и у=dx2+ex + f. При положительном...

Определить и вывести количество дней между двумя датами (логические операторы и операторы ветвлений)
Задачка Пользователь вводит две даты (день, месяц, год в виде целых чисел)....

Операторы присваивания, ввода- вывода. Операторы ветвления, выбора
Даны два ненулевых числа. Найти их сумму, разность, произведение, частное,...

1
ValeryS
Модератор
7134 / 5402 / 669
Регистрация: 14.02.2011
Сообщений: 18,227
11.04.2013, 23:00 #2
Цитата Сообщение от alekopi Посмотреть сообщение
for(b=0;x!=0;x>>=1)
крутить пока x!=0
делить x на 2 x>>=1
Цитата Сообщение от alekopi Посмотреть сообщение
if(x&01)
проверить есть ли младший бит
если есть то
Цитата Сообщение от alekopi Посмотреть сообщение
b++;
Добавлено через 4 минуты
Цитата Сообщение от alekopi Посмотреть сообщение
8 бит т.е. там как то цикл for пробегает всегда 8 раз ,
кто тебе это сказал?
это алгоритм приведения десятичного числа в двоичное методом деления
при 3 (0000 0000 0000 0000 0000 0000 0000 0011) цикл покрутится 2 раза
первый проход 0000 0011
if(x&01) 0000 0001 прибавляем b++;
второй проход 3/2=1
0000 0001
if(x&01) 0000 0001 прибавляем b++;
третий проход
1/2=0
x!=0; ложь выходим из цикла
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2013, 23:00
Привет! Вот еще темы с решениями:

«Языки и технологии программирования» «Операторы цикла. Условные операторы»
Не получается сделать что бы программа выводила все значения в промежутке, она...

Операторы языка С++: операторы цикла (исправьте программу)
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; using namespace std;...

Операторы ветвления и операторы передачи управления
1. Вычислить значения функции F при вещественных a, b, c, x, вводимых с...

Операторы принятия решения и операторы цикла.
Пожалуйста, помогите. Нужно срочно сделать задания: 1)Ввести с клавиатуры три...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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