Как преобразовать двоичное число в двузначное десятичное число в C - PullRequest
0 голосов
/ 11 марта 2011

Мне нужно преобразовать двоичное число в двузначное десятичное число. Например:

01111 becomes 15
00011 becomes 03

Я не просто пытаюсь отобразить цифры. Мне нужно поместить каждую цифру в переменную int. Скажем, у меня есть две переменные типа int, leftnum и rightnum.

Тогда в первом примере leftnum = 1 и rightnum = 5. Во втором примере leftnum = 0 и rightnum = 3.

Есть два ограничения, которые немного затрудняют это. мод и / могут использоваться только с полномочиями 2.

Ответы [ 3 ]

2 голосов
/ 11 марта 2011
int i = 0;
do {
    i ++;
} while (i * 10 <= originalInt);

int leftInt = i - 1; // e.g. for "originalInt = 40" -> "i = 5", so we must decrement 1
int rightInt = originalInt - leftInt * 10;

или более компактный и использующий меньше переменных:

int leftInt = 0;
do {leftInt ++;} while (leftInt * 10 <= originalInt);
int rightInt = originalInt - (-- leftInt) * 10;
1 голос
/ 11 марта 2011
#include <stdio.h>

int main()
{
  int i = 23;
  int left, right;

  right = i;
  left = 0;
  while(right > 9) {
    right -= 10;
    left += 1;
  }
  printf("%d %d\n", left, right);
}

или

#include <stdio.h>

int main()
{
  int i, left, right;
  for(i = 0; i < 100; i++) {
    left = ((i+1)*51) / 512;
    right = i - (left*10);
    printf("%d %d %d\n", i, left, right);
  }
}
0 голосов
/ 11 марта 2011

Это общая процедура на английском языке:

  1. Преобразовать число в десятичное, т. Е. Тип int в C (если цепочка битов представлена ​​строкой), иначе пропустите этот шаг.

  2. Используйте sprintf для получения десятичного представления целого числа.

  3. Вы можете выбрать каждый символ из строки и сохранить соответствующее число в соответствии с требованием int.

...