Как разбить целое число на разные переменные? - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь взять конечный результат программы немного дальше и разбить его на 4 раздела.Программа преобразует шестнадцатеричное число в двоичное.Я хочу взять двоичное число и разбить его на 4 разных раздела.Разделы 2,7,3,4.Примером может быть разбиение 0100000110001001 на 01 | 0000011 | 000 | 1001.Я собираюсь назначить каждый из разделов переменным n1, n2, n3 и n4.Конечным результатом будет n1 = 01, n2 = 0000011, n3 = 000 и n4 = 1001.Каков наилучший способ пройти через это?В настоящее время я использую c ++, но могу переключиться на что-то другое, если это проще.Спасибо

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Для этого можно использовать комбинацию >> (оператор смещения вправо) и & (логическое значение и оператор).

#include <iostream>
#include <bitset>

int main(){

  int i = 0b0100000110001001;
  int n4 = i & 0b1111; 
  std::cout << "n4 = " << std::bitset<4>(n4) << '\n';
  i = i >> 4;
  int n3 = i & 0b111; 
  std::cout << "n3 = " << std::bitset<3>(n3) << '\n';
  i = i >> 3;
  int n2 = i & 0b1111111; 
  std::cout << "n2 = " << std::bitset<7>(n2) << '\n';
  i = i >> 7;
  int n1 = i & 0b11; 
  std::cout << "n1 = " << std::bitset<2>(n1) << '\n';

}

Вывод:

n4 = 1001
n3 = 000
n2 = 0000011
n1 = 01
0 голосов
/ 01 октября 2018

Ну, вы можете разобрать ваше двоичное число в строку, а затем использовать подстроку для получения 4-х числовых разделов.У вас могут возникнуть проблемы с левыми нулями, которые будут исключены переменными типа int.Я сделал это в C #.

class Program
{
    static void Main(string[] args)
    {
        string binaryNumber = "0100000110001001"; // your binary number to string
        int n1 = Convert.ToInt32(binaryNumber.Substring(0, 2));
        int n2 = Convert.ToInt32(binaryNumber.Substring(2, 7));
        int n3 = Convert.ToInt32(binaryNumber.Substring(9, 3));
        int n4 = Convert.ToInt32(binaryNumber.Substring(12, 4));

        string xn1 = n1.ToString().PadLeft(2, '0');
        string xn2 = n1.ToString().PadLeft(7, '0');
        string xn3 = n1.ToString().PadLeft(3, '0');
        string xn4 = n1.ToString().PadLeft(4, '0');

        Console.WriteLine("Numbers in INT variables (without left zeros)");
        Console.WriteLine($"1 Section (2):{n1}");
        Console.WriteLine($"2 Section (7):{n2}");
        Console.WriteLine($"3 Section (3):{n3}");
        Console.WriteLine($"4 Section (4):{n4}");

        Console.WriteLine("Numbers in STRING variables (with left zeros)");
        Console.WriteLine($"1 Section (2):{xn1}");
        Console.WriteLine($"2 Section (7):{xn2}");
        Console.WriteLine($"3 Section (3):{xn3}");
        Console.WriteLine($"4 Section (4):{xn4}");
        Console.ReadKey();
    }
}

Надеюсь, это поможет!

...