所以我剛纔瞎搞,並寫下了這一點:管道操作員,它是如何工作的?
int i = 0|1|2|3|4|5|6|7|8|9|10;
Console.WriteLine(i.ToString());
Console.Read();
此輸出15.爲什麼它輸出15?管道運營商做了什麼?
你能舉個例子說明這可能實際上被用到了嗎?
我明白這是不是一個毫無意義的問題。
所以我剛纔瞎搞,並寫下了這一點:管道操作員,它是如何工作的?
int i = 0|1|2|3|4|5|6|7|8|9|10;
Console.WriteLine(i.ToString());
Console.Read();
此輸出15.爲什麼它輸出15?管道運營商做了什麼?
你能舉個例子說明這可能實際上被用到了嗎?
我明白這是不是一個毫無意義的問題。
的或經營基本事實表:
A B A|B
0 0 0
0 1 1
1 0 1
1 1 1
因此,要分析你的案例0|1|2|3|4|5|6|7|8|9|10
,二進制,那就是:
0 = 0b00000
1 = 0b00001
2 = 0b00010
3 = 0b00011
4 = 0b00100
5 = 0b00101
6 = 0b00110
7 = 0b00111
8 = 0b01000
9 = 0b01001
10 = 0b01010
------------
15 = 0b01111
進一步閱讀
你正在服用的逐位這些數字的二進制表示的OR。在二進制看起來像數字0至10:
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
如果你執行所有這些數字的每個數字的或者,你最終會與1111
- 這是15進制數。
我覺得一個更簡單的方法來找出數字是使用舊的'8421'方法,並且在哪裏你看到一個'1',如果你想要的話,你可以添加例如'1001 = 9'16它將是'10000' – MethodMan
|
是C#(和許多其他語言)中的按位或運算符。兩位之間的或運算如下所示:
0 | 0 = 0
1 | 0 = 1
0 | 1 = 1
1 | 1 = 1
so in decimal 1 | 2變成01 | 10二進制,導致11(3十進制),像這樣:
01
10
--
11
位或是一個累積的操作,以便:
0 = 00000
1 = 00001
2 = 00010
3 = 00011
4 = 00100
5 = 00101
6 = 00110
7 = 00111
8 = 01000
9 = 01001
10 = 01010
------------
15 = 01111
突然,它的解釋。 – plast1K
@ Plast1k你可以很容易地解釋這個LOL – MethodMan
我不相信我可以!我以前見過真相表,但並沒有真正能夠以這種方式應用它們。這非常有幫助。 – plast1K