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

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

Войти
Регистрация
Восстановить пароль
 
1programmer
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 30
#1

побитовые операторы _ - C++

15.09.2013, 21:09. Просмотров 405. Ответов 5
Метки нет (Все метки)

не могу разобраться в этой теме_ Вопрос по ходу дела, программа принимает число в диапазоне от 0 и до 255, после чего выводит двоичный код числа. В 27 строке, оператор if сравнивает переменные u и t которые преобразовываются в двоичный коде ?
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
#include <iostream> 
using namespace std; 
 
void show_binary(unsigned int u); 
 
int main() 
{ 
  unsigned u; 
 
  cout << "Введите число между 0 и 255: "; 
  cin >> u; 
 
  cout << "Вот двоичный код числа: "; 
  show_binary(u); 
 
  cout << "вот обратный код числа: "; 
  show_binary(~u); 
 
  return 0; 
} 
 
void show_binary(unsigned int u) 
{ 
  int t; 
 
  for(t=128; t>0; t = t/2) 
    if(u & t) cout << "1 "; 
    else cout << "0 "; 
 
  cout << "\n"; 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 21:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос побитовые операторы _ (C++):

Побитовые операторы. Объяснить код - C++
Ребята помогите плиз!!! Есть задача: Напишите функцию setbits(x,p,n,y) так, чтобы она возвращала аргумент x, в котором n битов, начиная с...

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

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

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

«Языки и технологии программирования» «Операторы цикла. Условные операторы» - C++
Не получается сделать что бы программа выводила все значения в промежутке, она выводит только одно. условия | ((z^3)+sin...

Операторы языка С++: операторы цикла (исправьте программу) - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; using namespace std; int main() { int a,n; float y,x; cout&lt;&lt;...

5
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,182
15.09.2013, 21:17 #2
Цитата Сообщение от 1programmer Посмотреть сообщение
u и t которые преобразовываются в двоичный коде ?
все числа в компьютере лежат в двоичном коде
Цитата Сообщение от 1programmer Посмотреть сообщение
for(t=128; t>0; t = t/2)
t=128 в шестнадцатеричном виде t=0x80 или 1000 0000 установлен 7 бит
t = t/2 это тоже самое что сдвиг влево на один разряд после него будет число 0100 0000
Цитата Сообщение от 1programmer Посмотреть сообщение
if(u & t)
поразрядная операчия И т.е цикл проходит с 7 (самого старшего) бита до нулевого и выделяет бит в числе если 1 пишем 1 если 0 то 0
Цитата Сообщение от 1programmer Посмотреть сообщение
void show_binary(unsigned int u)
здесь нужен в качестве аргумента unsigned char у него 8 бит а у int 32
или меняй параметр или цикл
1
1programmer
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 30
15.09.2013, 22:03  [ТС] #3
Цитата Сообщение от ValeryS Посмотреть сообщение
здесь нужен в качестве аргумента unsigned char у него 8 бит а у int 32
или меняй параметр или цикл
unsigned int 16 бит, если я не ошибаюсь _

Добавлено через 2 минуты
Цитата Сообщение от ValeryS Посмотреть сообщение
t=128 в шестнадцатеричном виде t=0x80 или 1000 0000 установлен 7 бит
ребята, я конечно извиняюсь за такой наверное глупый вопрос, но все равно не пойму, как вы считаете что там установлен 7 бит? не как не пойму этой всей логики _
0
monolit
186 / 185 / 22
Регистрация: 24.03.2011
Сообщений: 669
Завершенные тесты: 1
15.09.2013, 22:09 #4
Дискретная математика, чтоб ее... Двоичное представление числа. Вот такие дела. Вот преобразуешь это: 1000 0000 из двоичной системы в десятеричную(по нормальным схемам, понимая, что делаешь), и получишь 128.

Добавлено через 34 секунды
Цитата Сообщение от 1programmer Посмотреть сообщение
unsigned int 16 бит
ошибаешься... Все 32.
1
ValeryS
Модератор
6705 / 5114 / 482
Регистрация: 14.02.2011
Сообщений: 17,182
15.09.2013, 22:10 #5
Цитата Сообщение от 1programmer Посмотреть сообщение
unsigned int 16 бит, если я не ошибаюсь _
для 16 битных систем типа ДОС
в винде 32 бита
у 64битной системы 64 бита
Цитата Сообщение от 1programmer Посмотреть сообщение
ребята, я конечно извиняюсь за такой наверное глупый вопрос, но все равно не пойму, как вы считаете что там установлен 7 бит? не как не пойму этой всей логики _
я же тебе написал двоичный код числа считай справа 0 бит потом 1 и последний 7
27=128
вообще поучись переводить десятичные в двоичные и обратно, для начала можешь воспользоваться калькулятором виндовым в режиме программист
заучи степени 2 хотя бы до 10
1
1programmer
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 30
15.09.2013, 23:24  [ТС] #6
ребята, спасибо, сделал ручной просчет на листике и понял как она считает !
0
15.09.2013, 23:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2013, 23:24
Привет! Вот еще темы с ответами:

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

Операторы цикла и операторы передачи управления - C++
Вычислить сумму ряда S с погрешностью эпсилон, задаваемой с клавиатуры. Вывести количество итераций, сделанных при вычислении. Если...

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

Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на != - C++
Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на != Спасибо.


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

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

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