2017-04-07 104 views
2

我想用'|'之間的區別和 '+' 的位操作

00011011代表

ABCD

假設我有一個字符串,我想表達的,其長度爲5的所有子所以,我可以表達

AAABB0000000101

現在,我有一個字符串小號和整數標記這是用來表示小號串。當我添加一個B到子字符串mark = mark < < 2 | 1 我的問題是mark = mark < < 2有什麼區別2 | 1標記=標記< < 2 + 1

回答

1

可能取決於你所使用的語言(請加下一次標籤!),但通常運算符優先級將是:+ < < |

所以你實際上是比較(mark << 2) | 1mark << (2+1)。預計完全不同的結果。

如果您的問題是關於|(按位或)和+(加法),那麼我鼓勵您瞭解每個操作符的作用,然後返回一個更具體的問題。

如果你想知道:(mark << 2) | 1(mark << 2) + 1返回相同的結果,因爲左移保證最後一位爲零。

+0

是的,你是對的。不同的結果是由優先級引起的。謝謝! – ygyao

0

如前所述,它取決於您使用的編程語言或工具以及它們如何對待+。

+通常主要用作加法,所以如果是二元加法,結果可能會非常不同。例如,(假設8位數字),

01011001 + 000000001 => 01011010

的地方,

01011001 | 00000001 => 01011001