Помогите с кодом

Тема в разделе "Закажу проект", создана пользователем arssev1, 11 дек 2015.

  1. arssev1

    arssev1 Гик

    Очень нужен кусочек кода, который бы разбивал двухзначное число на разряды:
    К примеру у нас есть
    int number = 57;
    Из него надо получить
    int firstDigit; который будет равен в данном случае 5, и
    int secondDigit; который будет равен 7

    И еще нужен кусочек кода, собирающий двоичное 8-битное число из 2-х 4-битных, например:
    byte firstBinaryDigit = 0b0110
    и
    byte secondBinaryDigit = 0b1001;
    Надо получить из этого
    byte binaryDigit; который будет равен 0b10010110
     
  2. Salk

    Salk Гик

    Вот набросал код для числа вплоть до четырехзначного, конечно, не идеально - разбитие можно было бы вынести в цикл, а разряды заключить в массивы, но зато так более понятнее.
    На счет 8-ми битого числа до конца идею не понял. Вам нужно в бинарном виде число выводить?
    Код (C++):
    // Вычисляемое число
    int chislo = 57;
    // Для определения сколькозначное число
    int n0;
    // Первый разряд
    byte one;
    // Второй разряд
    byte two;
    // Третий разряд
    byte three;
    // Четвертый разряд
    byte four;

    void setup()
    {
      Serial.begin(9600);
    }

    void loop()
    {
      /*---------------------------*/
      // Узнаем сколькизначное число
      n0 = chislo / 10;
      // Двухзначное число
      if (n0 <= 9)
      {
        one = chislo / 10;
        two = chislo % 10;
        // Выводим результат
        Serial.print(one);
        Serial.print("  ");
        Serial.print(two);
        delay(100);
      }
      // Трехзначное число
      if (n0 > 9 && n0 <= 99)
      {
        one = chislo / 100;
        two = (chislo % 100) / 10;
        three = chislo % 10;
        // Выводим результат
        Serial.print(one);
        Serial.print("  ");
        Serial.print(two);
        Serial.print("  ");
        Serial.println(three);
        delay(100);
      }
      // Четырехзначное число
      if (n0 > 99)
      {
        one = chislo / 1000;
        two = (chislo % 1000) / 100;
        three = (chislo % 100) / 10;
        four = chislo % 10;
        // Выводим результат
        Serial.print(one);
        Serial.print("  ");
        Serial.print(two);
        Serial.print("  ");
        Serial.print(three);
        Serial.print("  ");
        Serial.println(four);
        delay(100);
      }
    }
     
    Последнее редактирование: 11 дек 2015
  3. ANV

    ANV Гуру

    result = (firstBinaryDigit) | (secondBinaryDigit << 4);
     
    Salk нравится это.