데이터베이스에 ints 필드가 비트 마스크되어 있습니다. 보통 내가 C# 코드를 통해 관리 할 수 있지만, 지금은 T-SQL을 사용하여 마스크의 비트를 반전 할 필요가T-SQL의 비트 반전 작업
나는 다음과 같은 수행 방법은 다음과 같습니다
내가 원하는 비트 플립 : 1 < < 8 (256)
I 플립 전에 마스크 값 : 143
I 후의 마스크 값 플립 : 399
이것은 T-SQL에없는 비트 연산자없이 할 수 있습니다. 맞습니까?
데이터베이스에 ints 필드가 비트 마스크되어 있습니다. 보통 내가 C# 코드를 통해 관리 할 수 있지만, 지금은 T-SQL을 사용하여 마스크의 비트를 반전 할 필요가T-SQL의 비트 반전 작업
나는 다음과 같은 수행 방법은 다음과 같습니다
내가 원하는 비트 플립 : 1 < < 8 (256)
I 플립 전에 마스크 값 : 143
I 후의 마스크 값 플립 : 399
이것은 T-SQL에없는 비트 연산자없이 할 수 있습니다. 맞습니까?
사용 XOR : 당신은뿐만 아니라 지수에 전달하려는 경우
이SELECT value^256
따라서 귀하의 경우, SELECT 143^256
실제로 399를 반환합니다
SELECT value^POWER(2, power)
질문은 비트 이동에 관한 것이며, 게시 한 기사는 그 내용과 아무 관련이 없습니다. – Edwin
질문은 비트 이동에 관한 것이 아니라 비트 이동에 관한 것입니다. –
제목은 비트 이동에 대해서는 잘못되었지만 비트 이동에 대해서는 실제 질문입니다. – DaveBoltman
감사합니다! 그것은 내 문제를 해결! 우아한 방법으로 비트를 켜는 방법이 있습니까? (이미 해봤지만 추한 것처럼 보입니다 ...) –
뒤집기 또는 켜기를 원하십니까? 뒤집기 - XOR 사용 (^); 켜기 - OR (|)을 사용하십시오. 좀 더 우아함을 원한다면 사용자 정의 함수 (tarly named user-defined function)로 포장하십시오. :) –