Hexadecimal to binary
От: olimp_20  
Дата: 06.09.15 11:12
Оценка:
Условие задачи
Задача на первый взгляд — очень-очень простая. Но не понятно: как из "14" получилось "10100"?
Ведь "1"-->1, "4"-->100 и ответ, как мне видится должен был быть 1100.
  Код — проходит приблизительно половину тестов
#include <stdio.h>

int main()
{
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);

    char ch;
    int x;

    while(scanf("%c", &ch)!=-1 && ch!='\n'){//посимвольное чтение

        if('0'<=ch && ch<='9') x = ch - '0';//конвертация символа в число
        else x = ch - 'A' + 10;

                //анализ чисел для перевода в двоичное представление
        if(x<2) {printf("%d", x); continue;}

        if(x<4) {
            for(int i=1; i>=0; --i)
                printf("%d", (x>>i)%2 );
            continue;
        }

        if(x<8) {
        for(int i=2; i>=0; --i)
                printf("%d", (x>>i)%2 );
            continue;
        }

        for(int i=3; i>=0; --i)//для чисел от 8 до F
                printf("%d", (x>>i)%2 );
    }

    printf("\n");

    return 0;
}

Пожалуйста, подскажите: как "14" переводится в "10100", согласно условию задачи?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.