То, что вы спрашиваете, является вопросом C, но вы помечаете его как цель-c, поэтому я рассмотрю оба.
C:
Эти переменные, такие какop[]..
действительно определены как char op[..]
(не уверен, что ваша длина), что, конечно, является строкой C.
Таким образом, операция является 6-битной, а каждый регистр 5-битным, то есть 15 + 6 =21 битное словоЯ предполагаю, что верхние 11 битов равны нулю.
Вам нужны еще 4 целые переменные:
int opint; int r0int; int r1int; int r2int;
Вам нужно целочисленное значение этихстроки, чтобы войти в эти целые числа.Вы можете использовать atoi () для достижения этой цели, например, opint = atoi(op);
Теперь, когда у вас есть целые числа, полученные из строк, вам нужно создать 32-битное слово.Самый простой способ сделать это - сначала создать одно целое число, которое содержит эти биты в нужном месте.Вы можете сделать это (предполагая 32-битные целые числа) следующим образом:
<code>
int word = 0;
word |= ((opint & 0x3f) << (21 - 6))) |
(r0int & 0x1f) << (21 - 11)) |
(r1int & 0x1f) << (21 - 16))
(r2int & 0x1f));
Где << смещается на место.После этого вы должны правильно сформировать слово integer.Затем просто включите его в двоичное представление (если это вообще необходимо? Не уверен в вашем приложении) </p>
Objective-C
Единственное отличие состоит в том, что я предполагаюэти строки начинаются с NSString *op;
и т. д. В этом случае получите целые числа по opint = [op intValue];
, затем сформируйте слово, как я описываю.