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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.74
Lovenok
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 7
#1

Двоичный код числа - C++

26.01.2010, 08:52. Просмотров 4884. Ответов 7
Метки нет (Все метки)

Вывести на экран двоичный код однобайтового числа типа char.
Теперь надо чтобы программа работала только с беззнаковыми данными. Помогите!!
Код
#include<iostream.h>                //подключение библеотеки printf и scanf
int main()                          //функция main
{
    char number;                    //число
    printf("Vvedite chislo:");
    scanf("%d",&number);            //считывание числа
    printf("Dvoichnii kod chisla:");
    int i;
    for (i = 7; i >= 0; i--)    //напечатать одно байтовое число в двоичном коде
    {
        int mask = 1 << i;          //расчёт маски
        if ( (mask & number) == 0 ) //определение бита
        {
            printf(" 0");           //напечатать 0
        }
        else printf(" 1");          //напечатать 1
    }
    return 0;                       //если программа выполнилась успешно
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
26.01.2010, 09:04     Двоичный код числа #2
C
1
char number;
C
1
scanf("%d",&number);
C
1
int mask = 1 << i;

C
1
unsigned char number;
C
1
scanf("%d", (int *) &number);
C
1
unsigned int mask = 1 << i;
Lovenok
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 7
26.01.2010, 09:21  [ТС]     Двоичный код числа #3
Цитата Сообщение от accept Посмотреть сообщение
C
1
char number;
C
1
scanf("%d",&number);
C
1
int mask = 1 << i;

C
1
unsigned char number;
C
1
scanf("%d", (int *) &number);
C
1
unsigned int mask = 1 << i;
А можно было так написать:
Код
#include<iostream.h>                //подключение библеотеки printf и scanf
int main()                          //функция main
{
    [B]unsigned char number;    [/B]                //число
    printf("Vvedite chislo:");
    scanf("%d",&number);            //считывание числа
    printf("Dvoichnii kod chisla:");
    int i;
    for (i = 7; i >= 0; i--)    //напечатать одно байтовое число в двоичном коде
    {
        int mask = 1 << i;          //расчёт маски
        if ( (mask & number) == 0 ) //определение бита
        {
            printf(" 0");           //напечатать 0
        }
        else printf(" 1");          //напечатать 1
    }
    return 0;                       //если программа выполнилась успешно
}
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
26.01.2010, 10:39     Двоичный код числа #4
А можно и вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
    
int main(void){
    unsigned char c;
    int i;
    printf("Number: ");
    scanf("%u", &c);
    for (i = 7; i >= 0; --i )
        printf("%d", ( c & 1 << i ) ? 1 : 0);
    printf("\n");
    return 0;
}
zim22
depict1
 Аватар для zim22
276 / 141 / 2
Регистрация: 11.07.2009
Сообщений: 606
26.01.2010, 10:48     Двоичный код числа #5
C++ way
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <bitset>
#include <sstream>
#include <string>
 
std::string dec2bin(char c) {
  std::bitset<sizeof(c) * 8> bs(c);
  std::stringstream ss;
  ss << bs;
  std::string result;
  ss >> result;
  return result;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
  std::string res = dec2bin('z');
  return 0;
}
Lovenok
0 / 0 / 0
Регистрация: 26.01.2010
Сообщений: 7
26.01.2010, 10:52  [ТС]     Двоичный код числа #6
Цитата Сообщение от easybudda Посмотреть сообщение
А можно и вот так:
C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
    
int main(void){
    unsigned char c;
    int i;
    printf("Number: ");
    scanf("%u", &c); что означает %u
    for (i = 7; i >= 0; --i )
        printf("%d", ( c & 1 << i ) ? 1 : 0); и вот это можно прокомментировать?
    printf("\n");
    return 0;
}
Я просто совсем новичок
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
26.01.2010, 11:10     Двоичный код числа #7
Цитата Сообщение от Lovenok Посмотреть сообщение
scanf("%u", &c); что означает %u
Десятичное число без знака (см. описание scanf())

Цитата Сообщение от Lovenok Посмотреть сообщение
printf("%d", ( c & 1 << i ) ? 1 : 0); и вот это можно прокомментировать?
Можно. Если выражение ( c & 1 << i ) истинно (не равно нулю), printf("%d", 1); если ложно, printf("%d", 0);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.01.2010, 17:19     Двоичный код числа
Еще ссылки по теме:

двоичный код C++
Перевод в двоичный код C++
C++ Перевод файла в двоичный код
C++ Перевод double в двоичный код
C++ Float в памяти и двоичный код

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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
26.01.2010, 17:19     Двоичный код числа #8
Можно собственно и без проверок
C
1
2
for(i = 7; i >= 0; --i)
    printf("%d", (number>>i)&1);
Yandex
Объявления
26.01.2010, 17:19     Двоичный код числа
Ответ Создать тему
Опции темы

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