이 코드 블록에서 물결표의 목적은 무엇입니까?이 상황에서 물결표의 목적은 무엇입니까?
public override int GetHashCode()
{
return ~this.DimensionId.Id^this.ElementId.Id;
}
^연산자 (C#을 참조) 진^운영자가 정수형 및 부울에 대해 미리 정의되어 2010 비주얼 스튜디오. 정수형의 경우 ^는 피연산자의 비트 배타적 OR을 계산합니다. bool 피연산자의 경우 ^는 피연산자의 논리 배타적 논리합을 계산합니다. 즉, 피연산자 중 하나가 참인 경우에만 결과가 참입니다.
은 ~ 연산자 (C# 1 참조) 비주얼 스튜디오 2,010 은 ~ 연산자는 각 비트를 반전시키는 효과를 갖는다는 피연산자의 비트 보수 동작을 수행한다. 비트 단위 보수 연산자는 int, uint, long 및 ulong에 대해 미리 정의됩니다.
~ (틸드) 연산자는 단일 정수 피연산자에 대해 비트 단위 보수를 수행합니다. 따라서 ~ 연산자는!와 단항 연산자 인 -, & 및 * 연산자와 같은 단항 연산자입니다. 숫자를 보완하는 것은 0 비트를 모두 1로 변경하고 모든 1을 0으로 변경하는 것을 의미합니다.
이유 이 문맥에서 사용되는 이유는 무엇입니까?
값이 작 으면 xor 연산자가 잘못된 해시 분포를 생성하는 경향이 있습니다. 비트를 뒤집으면 바뀔 수 있습니다. 이것이 실제로 작동하는 확률은 좋지 않습니다. 하나를 소수에 곱하고 더하는 것이 더 효과적입니다. –