단항 연산자 '&'은 어떻게 작동합니까?단항 연산자 '&'는 어떻게 작동합니까?
int num = 50, num2 = 100;
int x = num & num2;
결과 : X = 32
int num = 100, num2 = 90;
int x = num & num2;
결과 :이 코드를 실행 한 테스트 프로젝트에서
는 X =64 어떻게 계산합니까? MSDN에서
단항 연산자 '&'은 어떻게 작동합니까?단항 연산자 '&'는 어떻게 작동합니까?
int num = 50, num2 = 100;
int x = num & num2;
결과 : X = 32
int num = 100, num2 = 90;
int x = num & num2;
결과 :이 코드를 실행 한 테스트 프로젝트에서
는 X =64 어떻게 계산합니까? MSDN에서
: &
이진 연산자는 정수형 및 부울에 대해 미리 정의되어 있습니다. 정수 유형의 경우 &은 피연산자의 논리적 비트 단위 AND를 계산합니다. bool 피연산자의 경우 &은 피연산자의 논리 AND를 계산합니다. 그 경우 은 피연산자가 모두 참인 경우에만 결과가 참입니다.
귀하의 경우에는 통합 유형 버전입니다.
그래서 :
50 in binary is 00110010
100 in binary is 01100100
AND result is 00100000 (32 dec)
짧은 대답은 - 그것은 의존한다.
정수의 경우, 비트 연산을 수행합니다. 따라서 01100100
(100) 비트 단위 AND00110010
(50) = 00100000
(32)입니다.
첫 번째가 false
인 경우 두 번째 표현식을 평가하지 않는 지연된 AND &&
과 달리 열의 AND (항상 두 표현식을 평가 함)의 경우.
비트 단위 연산자는 비트 단위로 작업하고 비트 단위로 연산합니다.
이진 AND 연산자는 두 피연산자에 모두있는 경우 결과에 비트를 복사합니다.
(A & B) = 12, i.e., 0000 1100
우선 : 그것은 이 인수가 같은이 상황에서 &
는 진 연산자입니다. 아니요단 하나 연산자입니다.
&
두 개의 인수가있는 비트 AND 연산자입니다.
50 & 100
은 0b110010 & 0b1100100
입니다. 각 비트에 &
을 적용하면 0b100000
이 32입니다.
마찬가지로 100 & 90
을 분석 할 수 있습니다.
이진 값
50 (10) = 0110010 (2)
100 (10) = 1100100 (2)
논리적 AND 모두 값 1이 이제 한 결과이다되도록 비트 만 사용된다
0100000 (2) = 32 (10)
및
100 (10) = 1100100 (2)
AND
90 (10) = 1011010 (2)
------------------------
64 (10) = 1000000(2)
이것 비트 AND입니다.
"0b0110010 AND 0b1100100"에서 일반적인 장소에서 1과 0을 공유하여 0b0100000 = 32를 찾아야합니다.
"100 AND 90"은 0b1000000 = 64가됩니다.
도움이 되었기를 바랍니다.
비트 연산자는 과입니다. 50 비트 (이진)은 (오른쪽으로 세척)으로 정렬 할 때, 110,010, 100, 당신은 & 오퍼레이터가 각 위치에서 사용자가 하나를 얻을 수있는 방식으로 작동 110010 1100100
얻을 1,100,100이다 두 줄에 1이 있으면 다음과 같이 0을 얻습니다. 무슨 일이 일어나고 있는지 110010 1100100 ||||||| 0100000
그래서 당신은 (비트 작업을 수행 할 때 명확하게 비트를보기 위해) (32)
바이너리로 두 숫자를 표현입니다 이진 결과 100000을 얻고 살펴 있습니다
를private static String AndExplanation(int left, int right) {
String x = Convert.ToString(left, 2);
String y = Convert.ToString(right, 2);
String z = Convert.ToString(left & right, 2);
int length = Math.Max(x.Length, y.Length);
return String.Join(Environment.NewLine,
$"{x.PadLeft(length, '0')} ({left}) &",
$"{y.PadLeft(length, '0')} ({right})",
new String('-', length),
$"{z.PadLeft(length, '0')} ({left & right})"
);
}
는
Console.Write(AndExplanation(50, 100));
Console.Write(AndExplanation(90, 100));
당신이 볼 시험 :
,451,515,0110010 (50) &
1100100 (100)
-------
0100000 (32)
및
1011010 (90) &
1100100 (100)
-------
1000000 (64)
그것은 단항 연산자 아니다. 그것이하는 일에 관해서는, _bitwise operations_에서 읽으십시오. – paddy
간단한 구글 검색을하면 해답을 얻을 수 있고 단항 연산자가 아닌 비트가 AND가됩니다. –
'&'연산자는 두 개의 피연산자를 사용합니다. 왜 당신은 그것을 단 하나라고 부릅니까? –