2016-01-27 47 views
1

我有这样的一段代码,我会翻译成MIPS,但我不知道这意味着什么:A = B & C[0]&是什么意思为三元操作

当我谷歌三元操作我无法找到任何提及的&,只是e1 ? e2 : e

这是什么意思?

+0

为什么你认为这是一个*三元操作符?如果你认为是这样,你是否也认为'A = B + C [0]'是一个三元运算符? – Andreas

+2

我想你的老师用错了一本书 - 类似的问题已经在这里得到解答http://stackoverflow.com/questions/28160408/translating-c-to-mips-with-a-ternary-operator – VolAnd

+0

'&'不是在你的例子中是一个三元运算符,它是一个*二元运算符。 – Galik

回答

2

这里没有三元运算符。该表达式等同于A = (B & C[0]),即A被分配了按位AND应用于BC[0]的结果。

+1

...或逻辑与,如果变量是布尔类型。 –

0

&这里是二进制(2输入)运算符“按位和”。 在这种情况下,您有:

A = B & C[0]; 

所以A将收到的BC[0]的逐位和ING的结果。 允许想象A,B和C [0]是两个32个的整数,具有予随机分配他们的值,并允许查看二进制此操作:

B = 0000 0001 0010 0100 1000 1001 1011 1111 
C[0] = 1001 1110 1101 1101 1010 1010 1010 0101 
A = 0000 0000 0000 0100 1000 1000 1010 0101 (the and of the two values above) 

即,A只有一个1位其中BC[0]都有1位。

十进制这是19171775 & 2665327269 = 297125

顺便说一句,三元运算符有3个输入,最常见的是?:,如在R = C ? B : A