перевод в двоичную систему.

 
0
 
C++
ava
Prokazza | 01.05.2007, 00:59
покажите плз как переводить число в двоичную систему.
вернее как его переводить в с++  :biggrin
нашел темы про 10тичные. у меня была идея записать как деления дробью.
т.е. число делиться на два и при деление на два можно умножить только 1
а как ноль в остаток запихнуть недоперло. по формуле там гемар со степенями.
может как то проще можно а я незнаю.  smile 
Ответы (10)
ava
Prokazza | 01.05.2007, 00:26 #
спачибо... но можно болие понятно ? *на пальцах так сказать*  smile 
ava
Xenon | 01.05.2007, 00:32 #
Из 10чной в 2чную?

int binary(int num, int buf = 0, int digit = 1)
{
    if (num <= 0) return buf;
    buf += (num % 2) * digit;
    binary( num /= 2, buf, digit *= 10);
}

int main(int argc, char* argv[])
{
    int num = 20;
    int buf = num;
    std::cout << binary(num);
    std::cin.sync();
    std::cin.get();
    return 0;
}
ava
Prokazza | 01.05.2007, 00:49 #
нет )))
просто число любое простое число в двоичную =)
ava
Xenon | 01.05.2007, 00:51 #
Prokazza, а у сложные какие-то числа что ли? smile Простые числа, в твоем понимани, и есть 10чные - 5,6,2452345,7,4? 
ava
Prokazza | 01.05.2007, 01:00 #
ну в принцапи да ) точно у нас же (у человеков) 10тичная система исчисленяи )
т.е. твой код число человеческое 91отчное) переводит в двоичную?
ava
Xenon | 01.05.2007, 01:14 #
Из человеческого десятичного, в машинное и страшное двоичное smile
ava
dizzy1984 | 01.05.2007, 08:04 #

int i;
char buf[256];
itoa(i,buf,2);
printf ("binary: %s",buf);
ava
Voldemar2004 | 01.05.2007, 16:45 #
Цитата (Prokazza @  1.5.2007,  00:59 findReferencedText)
покажите плз как переводить число в двоичную систему.
Так:
#include <iostream.h>
#include <string.h>

string IntToBin(int Number);

int main()
{

int i;

cin >> i;

cin.get();

cout << IntToBin(i);

cin.get();

return 0;
}


string IntToBin(int Number) {

string buf;

    do
    {
        if (Number % 2 == 0) buf += '0';
        else buf += '1';

        Number /= 2;
    }
    while( Number > 0 );

    return strrev( (char*)buf.c_str() );

}
ava
ip127001 | 01.05.2007, 20:46 #
вот дела когда-то...велосипед правда

#include <stdlib.h>
#include<iostream.h>
#include<string>
#include <conio.h>
//---------------------------------------------------------------------------

int Stepen(int chislo=0,int stepen=0)
{
        int step=1, tmp=chislo;
                while (step<stepen)
                {
                        chislo=chislo*tmp;
                        step++;
                }
        return chislo;
}

int func(const char *chislo=0,int size=0)
{
        int *mas=new int[size];
        unsigned int result=0;
        int step=1,i=size-1;
                for (register int i=0;i<size;i++)  mas[i]=chislo[i]-'0';
                if (mas[i]==1){
                        result=1;
                        i-=1;
                        size--;
                }else{
                        result=0;
                        i-=1;
                        size--;
                }
                        while (size)
                        {

                                result=result+mas[i]*Stepen(2,step);
                                i--;
                                size--;
                                step++;
                        }
        delete[] mas;
        return result;
}

int main(int argc, char* argv[])
{
    unsigned int number = 0;
    char str[25];
    string bin_chislo;

        cout<<"Input number: ";
        cin>>bin_chislo;
                for (register string::size_type i=0;i<bin_chislo.size();i++)
                {
                        if ((bin_chislo[i]!='0') && (bin_chislo[i]!='1')){
                                cerr<<"Error : "
                                    <<"System of the numeration does not correspond!";
                                getch();
                                return -1;
                                }
                }
        number=func(bin_chislo.c_str(),bin_chislo.size());
        itoa(number, str, 16);

        cout<< "Dec = "<<number<<endl;
        cout<< "Hex = "<<str<<endl;

        getch();
        return 0;

}

упс пардон...тут наоборот...ну лан мож кому пригодиться 
ava
FiMa1 | 02.05.2007, 15:53 #

/***************************************************************
* ОПИСАНИЕ:                                                    *
*   переводит целые десятичные числа в СС с основанием 2 - 36  *
* ВХОД:                                                        *
*   num - число для перевода в другую систему счисления        *
*   radix - основание системы счисления                        *
*   str - строка, в которую помещается результат               *
* ВЫХОД:                                                       *
*   при успешном завершении возвращает 1, иначе - 0            *
****************************************************************/
int scale( int num, char *str, const int radix )
{
    int    priv = 0, i = 1;
    
    if( radix < 2 || radix > 36 || radix == 10 )
        return 0;
    
    while( 1 )
    {
        if( num >= radix )
        {
            priv = num / radix;//найти частное
            str[i++] = num - priv * radix;//найти остаток от деления
            num = priv;
        }
        else
        {
            *str = priv;
            break;
        }
    }

    for( i -= 1; i >= 0; i-- )
        if( str[i] >= 10 )
            str[i] = (char)( str[i] - 10 + 'A' );
    
    return 1;
}
Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить