разделить два числа с помощью битовых операторов - PullRequest
1 голос
/ 18 февраля 2012

Предполагая, что у меня есть переменная типа:

int n = 23;

можно разделить его и преобразовать в:

int x = n ?? ??; //2
int y = n ?? ??; //3

понятия не имею, как это сделать. Любая помощь очень ценится. Заранее спасибо.

Ответы [ 3 ]

6 голосов
/ 18 февраля 2012

Для этого не обязательно использовать битовые операторы. Фактически, поскольку битовые операторы работают с двоичным представлением чисел , они, как правило, не годятся для вычислений с основанием 10.

int n = 23;
int x = n / 10;
int y = n % 10;
1 голос
/ 18 февраля 2012

Вы можете использовать цикл для захвата каждого значения.Вам, конечно, придется следить за x здесь по-другому, но я думаю, что это сработает для вас.

while (n != 0)
{
    x = n % 10;
    n = n / 10;
}
0 голосов
/ 18 февраля 2012

другой подход с использованием библиотеки libc... есть и другие.

 int *
 val2arr(int *arr, const int val)
 {
       char tmp[32]={0x0}; // more than digits in LONG_MAX on 64 bit
       char *p=tmp;
       int *i=arr;
       sprintf(p, "%d", val);
       for(; *p; i++, p++ ) 
           *i=*p - 48;
       *i=-1;          // mark end with -1
       return arr; 
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...