Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите с задачей!


Автор: Voovan 19.12.2009, 11:42
Здраствуйте, помогите пожалуста кто-нибудь. 
Задача состоит в том, что-бы вывести на экран двоичный код однобайтового числа типа char (число вводится пользователем)
Заранее благодарен

Автор: xvr 19.12.2009, 12:16
Код

int v;
cin>>v;
for(int i=8;i--;)
 if (v&(1<<i)) cout<<'1'; else cout<<'0';
cout << endl;

Автор: Dov 19.12.2009, 12:33
Код
    char buff[9];
    char ch;

    cout << "Enter a symbol: ";
    cin  >> ch;
    cout << "dec: " << (int)ch << "\nbin: " << itoa(ch, buff, 2) << endl;

Автор: Voovan 20.12.2009, 08:56
Спасибо. Еще один вопрос. Вот я своими усилиями, не без помощи ваших содов сделал свой. 

Код

#include <iostream>
#include <stdio.h>
#include <conio.h>

int main()

{
    int i;
    char n;
    printf("Input some number:");
    scanf("%c", &n);

    for (i=8; i>0; i--)
    if (n&(1<<i))
    printf("1");
    else printf("0");


    return 0;
}




Но, в ответ он мне какуюто ерунду выдает, допустим: ввожу число 6, он пишет ответ 00011011, но это же неверно?! Кто знает в чем подвох?
Заранее спасибо!


Автор: Dov 20.12.2009, 09:04
Цитата(Voovan @  20.12.2009,  07:56 Найти цитируемый пост)
ввожу число 6

Ты вводишь не число 6, а символ '6',  код которого 54.

Автор: Voovan 20.12.2009, 09:15
а как же тогда реализовать, чтобы он выводил двоичный код числа? 

Автор: Dov 20.12.2009, 11:31
или  вместо char юзай int или так: 
Код
// ...
scanf("%c", &n);
n -= '0';
// ...

но это только числа от 0 до 9.

Автор: MightyCat 20.12.2009, 23:55
Что такое char?
Если знаковый то это число от -127 до +127
Если безнаковый, то это число от 0 до 255

Предлагаем ввод до тех пор, пока пользователь не введет число из нужного диапазона.
А вообще вверху была уже рекомендация, какой код написать, как вариант:
Код

#include <iostream>

int main()
{
    int dig;
    // While (true)
    std::cout << "Input char digit: ";
    std::cin >> dig;
    // if (число в заданном диапазоне) break;
    for (int i=7; i != -1; --i)
        if (dig&(1<<i))
            std::cout << "1";
        else
            std::cout << "0";
    std::cout << std::endl;
    return 0;
}

Автор: bsa 21.12.2009, 11:46
Voovan, и еще обрати внимание, что у тебя i  в цикле пробегает значения с 8 до 1, а биты в байте нумеруются с 0 до 7 (сдвиги такие же должны быть).

Автор: Voovan 23.12.2009, 10:10
ооо, все, доперло, спасибо огроменное!!!)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)