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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 26, средняя оценка - 4.77
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
#1

Вывести на экран бинарный код целого числа - C++

11.10.2008, 13:23. Просмотров 3586. Ответов 14
Метки нет (Все метки)

как вывести на экран бинарный код целого числа?
Пример:
C++
1
2
3
4
int a=0;
cin>>a;
// консольный вывод бинарного значения а.
// (например у 1 он 0001)
Добавлено через 35 секунд
можно на С можно на С++
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.10.2008, 13:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран бинарный код целого числа (C++):

Работа с файлами. Вывести бинарный код файла на экран в Visual C++ - C++
Доброе время суток форумчане. Нужна ваша помощь. Сразу подмечу что для кого-то ответ может оказаться элементарным. Просьба отнестись с...

посчитать и вывести на экран количество целого и десятичного числа - C++
Помогите пожалуйста с заданием Посчитать и вывести на экран количество целого и десятичного числа

Вывести на экран все нечетные цифры целого положительного числа - C++
Помогите решить задачу пожалуйста" Вывести на экран все нечетные цифры целого положительного числа"

Сгенерировать и вывести на экран массив из целого числа n случайных чисел - C++
Сгенерировать и вывести на экран массив из целого числа n случайных чисел от -120 до 120. Создать новый массив из элементов от -50 до 50. ...

Вывести на экран второго и шестандцатую эквиваленты целого числа. Не использовать спецификатор типа% х,% Х в функции printf. - C++
Вывести на экран второго и шестандцатую эквиваленты целого числа. Не использовать спецификатор типа% х,% Х в функции printf.

Генерировать и вывести на экран массив с целого числа n случайных чисел от -100 до 100 - C++
Генерировать и вывести на экран массив с целого числа n случайных чисел от -100 до 100. Число n вводит пользователь. Последний...

14
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
11.10.2008, 13:33 #2
Переопредели оператор << для такого вывода
0
AquaSky
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 18
11.10.2008, 13:35  [ТС] #3
Цитата Сообщение от igor_nf Посмотреть сообщение
Переопредели оператор << для такого вывода
а можно подробнее?
0
Sergei
1437 / 704 / 41
Регистрация: 22.04.2008
Сообщений: 1,608
13.10.2008, 12:14 #4
Он имеет ввиду необходимо перегрузить оператор<< для вывода бинарного числа
0
WaRLoCK_UA
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 20
13.10.2008, 17:02 #5
Хмм... думаю что можно не переопределять оператор <<... хотя возможно я так думаю так как не умею этого)
Можно просто перевести число из десятичной системы в двуичную!

Добавлено через 24 минуты 11 секунд
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
#include <iostream>
#include <windows.h>
using namespace std;
void print(char* src);
int HowMany(int num);
void main()
{
    int num; print("Введите число: "); cin>>num;        //Создаем и вводим число
    int size=HowMany(num);                              //Определяем необходимый размер для массива 1-иц и 0-ей
    int* binary=new int[size];                          //Создаем массив под 1 и 0
    for(int i=size-1;i>=0;i--)
    {
        binary[i]=num%2;                                //Заполняем его с конца
        num/=2;                                         //и делим num на 2
    }
    for(int i=0;i<size;i++)
        cout<<binary[i];
    cout<<'\n';
}
void print(char* src)
{
    char dst[256];
    CharToOem(src,dst);
    cout<<dst;
}
int HowMany(int num)
{
    int size=0;
    for(;num!=1;num=num/2)
        size++;
    return size+1;
}
А вот и пример, щас попробую обяснить...

Добавлено через 5 минут 14 секунд
Преобразование десятичных чисел в двоичные

Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой :
Код
19 /2 = 9  с остатком 1
9  /2 = 4  c остатком 1
4  /2 = 2  с остатком 0
2  /2 = 1  с остатком 0
1  /2 = 0  с остатком 1
Результат - 10011
Ставим числа из остатка друг за другом, начиная с конца. В результате получаем число 19 в двоичной записи (начиная с конца): 10011.
0
ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
13.10.2008, 18:05 #6
На моё мнение так проще и удобнее... но предыдущий пример нагляднее

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
 
void main()
{
     int a;
     cin>>a;
     for(int i=0; i<8;i++)
          cout<<(a & (256>>i)?'1':'0');
     cout<<endl;
}
0
WaRLoCK_UA
0 / 0 / 0
Регистрация: 09.10.2008
Сообщений: 20
13.10.2008, 18:20 #7
Цитата Сообщение от ABTOP Посмотреть сообщение
На моё мнение так проще и удобнее... но предыдущий пример нагляднее
Я еще только новичок...))
0
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
13.10.2008, 21:30 #8
На моё мнение так проще и удобнее...
Ты наверное хотел сказать вот так ?
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream.h>
 
void main()
{
     int a;
     cin>>a;
     for(int i=0; i<8;i++)
          cout<<(a & (256>>i + 1)?'1':'0');
     cout<<endl;
}
0
Skaffi
1 / 1 / 0
Регистрация: 13.10.2008
Сообщений: 10
13.10.2008, 21:55 #9
igor_nf, в "Философии С++" Брюса Эккеля приводится хорошая функция:

C++
1
2
3
4
5
6
7
void printBinary (unsigned char val)
{
  for (int i=7; i>0; i--)
  if (val & (1<<i))
    cout << "1";
  else cout << "0";
}
она хорошо работает)))
0
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
13.10.2008, 23:07 #10
она хорошо работает)))
Смотрим..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
void printBinary (unsigned char val)
{
  for (int i=7; i>0; i--)
  if (val & (1<<i))
  std::cout << "1";
  else std::cout << "0";
}
 
int main() {
  printBinary [b](3)[/b];
}
Вывод:
0000001

Да уж.. Действительно философ..
0
Skaffi
1 / 1 / 0
Регистрация: 13.10.2008
Сообщений: 10
13.10.2008, 23:17 #11
Смотрим..
у меня работает. просто делай нормально.
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    unsigned int getval;
    unsigned char a;
    cout << "Enter a number 0-255 ";
    cin >> getval;
           a = (unsigned char)getval;
    printBinary(a);
    cout << endl;
}
0
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
13.10.2008, 23:29 #12
у меня работает. просто делай нормально.
Слушай, чувство юмора у тебя, я гляжу, не страдает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
void printBinary (unsigned char val)
{
  for (int i=7; i>0; i--)
  if (val & (1<<i))
  cout << "1";
  else cout << "0";
}
 
int main()
{
unsigned int getval;
unsigned char a;
cout << "Enter a number 0-255 ";
cin >> getval;
a = (unsigned char)getval;
printBinary(a);
cout << endl;
}
Ввод: 3
Вывод: 0000001

Ввод: 10
Вывод: 0000101
0
Skaffi
1 / 1 / 0
Регистрация: 13.10.2008
Сообщений: 10
13.10.2008, 23:35 #13
бред какой-то. то, что ты скидываешь, реально так выводит. смотри как у меня сделано.

есть 2 файла.
первый:

//pod.cpp неважно, что сpp расширение. раньше так стояло, сейчас менять уже не буду...
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
using namespace std;
 
void printBinary (const unsigned char val)
{
    for(int  i=7; i>=0; i--)
        if (val & (1<<i))
            cout << "1";
        else 
            cout << "0";
}
теперь второй:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include "pod.cpp"
using namespace std;
 
int main()
{
    unsigned int getval;
    unsigned char a, b;
    cout << "Enter a number 0-255 ";
    cin >> getval;
 
 a =(unsigned char) getval;
     printBinary(a);
     cout << endl;
}
0
igor_nf
118 / 12 / 1
Регистрация: 21.08.2007
Сообщений: 222
13.10.2008, 23:41 #14
Цитата Сообщение от Skaffi Посмотреть сообщение
бред какой-то. то, что ты скидываешь, реально так выводит. смотри как у меня сделано.
for(int i=7; i>=0; i--)

Разница есть по сравнению с пред. вариантом ?
0
Skaffi
1 / 1 / 0
Регистрация: 13.10.2008
Сообщений: 10
13.10.2008, 23:44 #15
нашла, где у тебя ошибка!!!!
При определении функции printBinary тебе надо писать

printBinary(const unsigned char val)

а ты пишешь:

printBinary(unsigned char val)

поэтому и не работает..

Добавлено через 1 минуту 2 секунды
Цитата Сообщение от igor_nf Посмотреть сообщение
for(int i=7; i>=0; i--)

Разница есть по сравнению с пред. вариантом ?
вот этот правильный. прости за i>0. тогда он 7 бит выводит. а надо 8.
0
13.10.2008, 23:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2008, 23:44
Привет! Вот еще темы с ответами:

Сгенерировать и вывести на экран массив из целого числа n случайных чисел от -120 до 120 - C++
Сгенерировать и вывести на экран массив из целого числа n случайных чисел от -120 до 120. Вывести номер предпоследнего положительного...

Функция вывода на экран всех множителей целого числа - C++
Написать программу. Функция вывода на экран всех множителей числа. Цикл for

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

подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... - C++
подскажите: как вывести на экран числа от 0 до 20.... и еще одна: вывести все четные числа от 0 до 20... эт надо очень срочно....


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

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

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