16 비트 숫자에서만 이진수 연산을 수행 할 수있는 언어로 작업하지만 32 비트 값에서 2 진수 연산을 사용해야하므로 내 자신의 기능 중 일부. 예를 들어, I 구현 이진 OR로서 :16 비트를 사용하여 32 비트 값에서 비트 시프트 구현
_32bit_or(a,b){
var{
a1=round(a/(2**16));
a2=a%(2**16);
b1=round(b/(2**16));
b2=b%(2**16);
}
.=((a1|b1) * (2**16)) + (a2|b2);
}
분할 2 개의 16 비트 부분으로 32 비트 값 또는 각 부분과 재결합한다. 충분히 간단합니다.
하지만 이제는 쉬프트를 구현해야합니다. 쉬워 보이기 쉽지 않습니다. 왜냐하면 쉬프트하고, 쉬프트 한 다음, 재결합하여, 비트를 잃어 버리기 때문입니다! 내가 시도한 것은 :
_32bit_rshift(a,b){
var{
a1=round(a/(2**16));
a2=a%(2**16);
}
. = ((a1>>b) * (2**16)) + (a2>>b)
}
그러나 이것은 물론 언급 한대로 작동하지 않습니다. 누구든지 일부 입력을 제공 할 수 있습니까?