Как сделать функцию, которая принимает двоичный аргумент? - PullRequest
1 голос
/ 05 сентября 2011

, поэтому у меня есть эта функция, которая возвращает двоичное представление в c:

long int int2bin(int d)
{
    int rem, pow = 1;
    long int b = 0; 
    while(d > 0) 
    {
        rem = d % 2 ;
        b += (pow * rem);
        d /= 2;
        pow *= 10;
    }

    return b;
}

, поэтому мне было интересно, как мне использовать функцию bin2int ():

long int bin2int( bin b);  

и вы бы использовали это так:

bin2int(10011); 

и я мог бы это

printf("%i\n", bin2int(10011));

, чтобы получить 19

Ответы [ 3 ]

2 голосов
/ 05 сентября 2011

Просто замените 2 s и 10 в вашей функции соответственно на 10 s и 2.

1 голос
/ 05 сентября 2011

Двоичные, шестнадцатеричные и десятичные просто разные способы представления одного и того же числа. Например, все эти представления равны - 27 в десятичной = 0x1b в hex = 0b11011 в двоичной.

Вы можете указать число, используя любой формат в качестве аргумента функции, ожидающей число (int, unsigned int, даже char и т. Д.).

Например, чтобы напечатать ваше двоичное число, вы можете сделать printf("%i\n", 0b10011), что даст вам число 19. Вы можете написать оператор как printf("%i\n", 19) (десятичный) или printf("%i\n", 0x13) (шестнадцатеричный).

0 голосов
/ 05 сентября 2011

В псевдокоде:

int result = 0;
int ci = 1;
string s = stringof(10011).reverse();
for(int z=0; z < s.length; z++,ci = ci * 2)
{
   if(s[z] == '1')
      result += ci;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...