Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2010, 19:03   #1
kontroller
 
Регистрация: 15.02.2010
Сообщений: 3
По умолчанию Перевод числа из двоичной системы в десятичную С++

собственно.. желательно на уровне первого семестра техвуза и с максимально подробными пояснениями
kontroller вне форума Ответить с цитированием
Старый 15.02.2010, 20:03   #2
liljon
Форумчанин
 
Регистрация: 03.01.2010
Сообщений: 229
По умолчанию

Подробнее не могу
Код:
typedef unsigned char _BYTE;
//Функция возведения числа в степень
int step(int num,int _i)
{
    int t = num;
    if (_i > 0) for (int i=0;i<_i-1;i++) num *= t;
    else num = 1;
    return num;
}

//Приведение одного байта в число
int ChrToNum (_BYTE b)
{
	_BYTE r[2];
	r[0] = b;
	r[1] = 0;
	return atoi((char*)r);
}

//Перевод двоичной системы в десятичную
int BinToDecimal(const char * hex)
{
        long Number = 0;
        int To = strlen(hex);//длина двоичного числа
        for (int i=0;i<To;i++)
        {
			/*
			Расчитываем по формуле выходное число 
			10110110 = (1·2^7)+(0·2^6)+(1·2^5)+(1·2^4)+(0·2^3)+(1·2^2)+(1·2^1)+(0·2^0) = 128+32+16+4+2 = 182
			*/
            Number += ChrToNum((_BYTE)hex[i]) * step (2, (To-i-1));
        }
        return Number;
}

int main(int argc, char * argv[])
{
	int r = BinToDecimal("10111");
	return 0;
}
подпись

Последний раз редактировалось liljon; 15.02.2010 в 20:05.
liljon вне форума Ответить с цитированием
Старый 15.02.2010, 20:39   #3
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Вот чуть менше кода
Код:
#include <stdio.h>
#include <conio.h>
int main () 
{
    char c;
    int result=0;
    while(scanf("%c",&c) ) {
        if( (c<'0') || (c > '1') ) break;
        result<<=1;
        result+=c-'0';
    };
    printf("\n%d",result);
    getch();
}
Cpluser вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод числа с десятичной системы в восьмеричную систему Yardik Помощь студентам 1 21.01.2010 08:41
Перевод из шестнадцатиричной в десятичную систему Dayne Помощь студентам 5 02.10.2009 01:04
Перевод числа в различные системы счисления ...Оленька... Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.12.2008 16:08
Перевод числа в разные системы счисления Сергий Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 04.12.2008 21:15