Нужна помощь

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

  1. arssev1

    arssev1 Гик

    Писал ранее, меня не совсем верно поняли, теперь напишу конкретнее
    Нужен кусочек кода, который будет делать следующее
    Итак, у нас есть десятичное число, два разряда, скажем:
    Код (C++):
    int number = 57;
    Мы его разбиваем на десятки и единицы:
    Код (C++):
    int firstDecimalDigit = number / 10;
    int secondDecimalDigit = number % 10;
    Теперь нам надо превратить firstDecimalDigit и secondDecimalDigit в бинарное число, причем обязательно с 4 разрядами, то есть после какого-то кода мы должны получить
    firstBinaryDigit = 0b0101 (это наша 5)
    secondBinaryDigit = 0b0111 (это наша 7)
    И именно так, никак иначе, то есть ноль в 4 разряде не должен урезаться
    А после этого эти два числа надо объединить, не сложить, не умножить, а объединить. Например
    binaryResult = 0b01010111 (как-бы 0b(зашифрованная 5)(зашифрованная 7)
    То есть мы должны получить 8-и битное число где первые 4 разряда - secondBinaryDigit, а последние 4 - firstBinaryDigit (не наоборот)
    Все это я буду слать в 74НС595, а посему он не поймет, если где-то какой-то нолик урежется
    Буду очень благодарен помощи
     
  2. arssev1

    arssev1 Гик

    Если кому-то поможет лучше понять ситуацию, то я шлю это число на 74HC595, а от него первые 4 бита уходят на один CD4511 (он дешифрует разряд единиц), а вторые 4 бита на второй CD4511 (а он - разряд десятков)
     
  3. DrProg

    DrProg Вечный нерд

    Так нужно сделать байт из числа по этому алгоритму? Интересная задачка, надо подумать пару минут. )

    Нате вам:
    Код (C++):
      dozens = number / 10;
      units = number % 10;
      result = (dozens << 4) + units;
    Этот байт можно закидывать в регистр.
     
    Последнее редактирование: 22 дек 2015
    ИгорьК нравится это.
  4. arssev1

    arssev1 Гик

    Прям не то что спасибо - спасибище!
    А можете объяснить, как это работает?
     
  5. Radius

    Radius Гик

    Так все же очевидно. Десятки это число деленное на 10. Единицы - остаток от деления на 10. Далее десятки сдвигаем на четыре разряда влево и складываем с единицами и получаем то что вы хотели.
     
  6. Onkel

    Onkel Гуру

    в некоторых си есть двоично - десятичное представление - то что у тс называется " бинарное число, причем обязательно с 4 разрядами", с переводом туда- сюда, может и в ide ардуины есть? Так по идее должно быть.
     
  7. arssev1

    arssev1 Гик

    Во, это не понятно было