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

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

Восстановить пароль Регистрация
 
1programmer
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 24
15.09.2013, 21:09     побитовые операторы _ #1
не могу разобраться в этой теме_ Вопрос по ходу дела, программа принимает число в диапазоне от 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"; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2013, 21:09     побитовые операторы _
Посмотрите здесь:

C++ Операторы принятия решения и операторы цикла.
Написать программу, используя операторы циклов и операторы ветвления C++
C++ Переписать символы с входящего рядка в выходящий, меняя операторы языка паскаль на операторы языка С++ := на =, = на ==, # на !=
С++.Операторы в С++: условные операторы, операторы break и continue C++
Операторы ветвления и операторы передачи управления C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
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
или меняй параметр или цикл
1programmer
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 24
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 бит? не как не пойму этой всей логики _
monolit
179 / 179 / 21
Регистрация: 24.03.2011
Сообщений: 641
Завершенные тесты: 1
15.09.2013, 22:09     побитовые операторы _ #4
Дискретная математика, чтоб ее... Двоичное представление числа. Вот такие дела. Вот преобразуешь это: 1000 0000 из двоичной системы в десятеричную(по нормальным схемам, понимая, что делаешь), и получишь 128.

Добавлено через 34 секунды
Цитата Сообщение от 1programmer Посмотреть сообщение
unsigned int 16 бит
ошибаешься... Все 32.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
15.09.2013, 22:10     побитовые операторы _ #5
Цитата Сообщение от 1programmer Посмотреть сообщение
unsigned int 16 бит, если я не ошибаюсь _
для 16 битных систем типа ДОС
в винде 32 бита
у 64битной системы 64 бита
Цитата Сообщение от 1programmer Посмотреть сообщение
ребята, я конечно извиняюсь за такой наверное глупый вопрос, но все равно не пойму, как вы считаете что там установлен 7 бит? не как не пойму этой всей логики _
я же тебе написал двоичный код числа считай справа 0 бит потом 1 и последний 7
27=128
вообще поучись переводить десятичные в двоичные и обратно, для начала можешь воспользоваться калькулятором виндовым в режиме программист
заучи степени 2 хотя бы до 10
1programmer
0 / 0 / 0
Регистрация: 04.10.2012
Сообщений: 24
15.09.2013, 23:24  [ТС]     побитовые операторы _ #6
ребята, спасибо, сделал ручной просчет на листике и понял как она считает !
Yandex
Объявления
15.09.2013, 23:24     побитовые операторы _
Ответ Создать тему
Опции темы

Текущее время: 05:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru