2013-04-26 61 views
4

的配合​​使用,我無法理解發生了什麼,以及如何這個結果從下面幾行:奇怪的結果時,與在兩個整數C#

例1:我得到作爲結果的下方。

int a = 1, b = 9; 
int r = a & b; 
Console.WriteLine(r); 

實施例2:我得到作爲結果的下方。

int a = 10, b = 9; 
int r = a & b; 
Console.WriteLine(r); 

我不知道&的意義和&在這方面的意義。上述結果如何被操縱?什麼是邏輯?

+0

我想知道你在這裏試圖做什麼。你期望什麼結果? – comecme 2013-04-26 06:54:57

+0

哈哈我參加了一個在線考試,並且有一個問題,所以我在VS中試過了,我得到了結果,我不知道結果的邏輯是什麼。這就是爲什麼我問這裏:D – Learner 2013-04-26 06:55:53

回答

10

按位運算:

9 = 1001  9 = 1001 
1 = 0001  10 = 1010 
--------  --------- 
& = 0001 = 1 & = 1000 = 8 

其中&如下真值表(每比特):

& | 0 1 
--+---- 
0 | 0 0 
1 | 0 1 

即「輸出1僅當兩個輸入均爲1」

+0

謝謝Marc :)它幫助我很多 – Learner 2013-04-26 06:53:10

+0

但我有一個問題。我們如何知道&這個真值表?另外什麼是真理表或運營商?我認爲它由||表示? – Learner 2013-04-26 06:54:27

+0

@Divine按位「或」是'|',而不是'||'; 「或者」是「如果其中一個或兩個輸入都是1,則輸出1」,因此「{0,0} => 0」,「{1,0} => 1」,「{0,1} => 1」 '{1,1} => 1'。關於「我們如何知道真值表」 - 要麼通過理解推理(即,只有在兩個輸入都是1的情況下的「輸出1」)並且通過另一個叫做「學習它」的技巧來計算出來。海事組織「理解推理」方法更有用。例如,「xor」是「輸出1,如果*正好*一個(即不是兩個)輸入都是1」等 – 2013-04-26 06:58:37

1

它是Bitwise & (AND)運營商。

按位和運算符更改位。它爲按位邏輯提供了重要的 功能。當它被應用到兩個數字, 結果是包含1另一個號碼,每個兩件 數也有1

另見:& Operator (C# Reference)

對於你的情況下 INT a = 1,b = 9; int r = a & b;

a: 0001 (binary equvivalent of 1) 
b: 1001 (binary equvivalent of 9) 
---------- 
r: 0001 (which would be 1) 
+0

謝謝哈比:)這可以幫助我 – Learner 2013-04-26 06:50:36

+1

@Divine,不客氣 – Habib 2013-04-26 06:51:02

2

& Operator (C# Reference)

對於整型,&計算邏輯按位的 操作數

真值表&

& | 0 1 
--+---- 
0 | 0 0 
1 | 0 1 

當你寫1 & 9結果將是1,因爲它的工作原理等;

0001 
1001 

x--------------- 
0001 

當你寫10 & 9結果將是8,因爲它的工作原理等;

1010 
1001 

x--------------- 
1000 
+1

謝謝你Soner :)它可以幫助我 – Learner 2013-04-26 06:52:20

+0

@Divine歡迎你'')' – 2013-04-26 06:53:10

+0

:)..... .................... – Learner 2013-04-26 06:54:59

0

Here是一個示例:

3: 0011 
    1: 0001 

3 & 1: 0001 
0

INT R =一個& B; // A = 1,B = 9

第一示例:

a: 0 0 0 1 
b: 1 0 0 1 

r: 0 0 0 1 // 1 

第二示例:

a: 1 0 1 0 
b: 1 0 0 1 

r: 1 0 0 0 // 8 

&(AND-操作者)意味着,結果(r)是僅1當a和b是1.否則它是0.

+0

謝謝,但一個是隻有1和b不是1,你說「當和和b」應該是1,因爲r是1.你如何計算a/b的二進制除法? – Learner 2013-04-26 06:50:03