непонимание логического оператора языка c - PullRequest
3 голосов
/ 26 ноября 2010

У меня есть такие вопросы в моей книге, что я делаю это для проверки себя, но я не знаю правильного ответа, и нет никаких объяснений.

состоит из двух частей: «а» и «б»

a) A = B & C[0]
b) A = A ? B : C[0]

C[0]  = 0x00001234
A = 0x00000000
B = 0x00002222

хочу от меня, чтобы

1)what is the result of A 
2) the MIPS instruction for each part
3)show the bit level representation of each in structure.

спасибо

Ответы [ 3 ]

3 голосов
/ 26 ноября 2010

& является побитовым AND. Каждый бит вывода равен 1, если оба соответствующих входных бита равны 1:

0x00001234 = .... 0001 0010 0011 0100
0x00002222 = .... 0010 0010 0010 0010

AND result = .... 0000 0010 0010 0000 = 0x00000220

Я не знаю MIPS, но инструкция, вероятно, просто называется and.

? - это троичный оператор: ваш пример означает «если A является истинным логическим выражением, то вернуть B, иначе вернуть C [0]». Обычно в C false равно нулю и true не равно нулю (я не уверен на 100%, стандартизировано ли это - я не думаю, что это было в более ранних стандартах, но это обычное использование), так что

  • если A = 0x0000, то (bool) A == false и результатом будет C [0].
  • если A = 0x0220 (перенос результата из части a), тогда (bool) A == true и результат B.
2 голосов
/ 26 ноября 2010

& - побитовый оператор AND в C. например.0000 & 0001 = 0000

? - это другой способ записи if

A = A ? B : C[0]

говорит, что A получает значение = (если A истинно, то B ELSE C [0])

Преобразовать из шестнадцатеричного в двоичное и выполнить упражнение.

править: уточнять: сделать "И" в -> "побитовое И"

1 голос
/ 27 ноября 2010

mips:

a) A = B & C [0]

$ t1 = C

$ t2 = B

$ t3= A

lw $ t0, 0 ($ t1); перевести c во временную переменную

и $ t3, $ t0, $ t2; выполнить поразрядно и

b)A = A?B: C [0]

$ t1 = C

$ t2 = B

$ t3 = A

beq $ 0, $ t3, 3;если A = 0, то на 3 строки вниз

добавьте $ t3, $ 0, $ t2; переместите B в конец A

j; перейдите в конец

lw $ t0, 0($ t1); загрузить c во временную переменную

, добавить $ t3, $ 0, $ t0; переместить временное значение в конец

:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...