0
나 인터리브 애 쓰고
케이스 (1)과 (2)는 긴 숫자 x
및 y
(32 비트)라고 서명 (모튼 코드를 계산) 계산 :
x = 10; //1010
y = 10; //1010
결과가 될 것이다
11001100
경우 2 :
x = -10;
y = 10;
,369 1,363,210
이진 표현은 인터리빙
x = 1111111111111111111111111111111111111111111111111111111111110110
y = 1010
는 난 다음 코드를 사용
y
, 31 비트로
x
31 비트를 인터리빙 할 32 비트 표현을 고려하고,이다
signed long long x_y;
for (int i = 31; i >= 0; i--)
{
unsigned long long xbit = ((unsigned long) x)& (1 << i);
x_y|= (xbit << i);
unsigned long long ybit = ((unsigned long) y)& (1 << i);
if (i != 0)
{
x_y|= (x_y<< (i - 1));
}
else
{
(x_y= x_y<< 1) |= ybit;
}
}
우리가 x
양수 및 y
음수이지만 케이스 2가 실패하면 위의 코드가 제대로 작동합니다. 제발 도와주세요, 무슨 일 이니? 음수는 64 비트를 사용하는 반면, 양수는 32 비트를 사용합니다. 잘못된 경우 저를 고칩니다.