문제

CS의 2 학년이 대답 할 수 있어야하지만 머리를 감싸지 못하는 것 같습니다 ...

비트 세트가 있고 비트의 일부를 다른 세트로 교체해야합니다. 단순화 된 예에서 :

10101010- 원천 비트 세트

00001111- 교체 위치를 보여주는 마스크

00001100 -New 비트 값

10101100- 구조 비트 세트

또 다른 예:

10101010- 원천 비트 세트

00110011- 마스크

11111111- 새로운 비트 값

10111011- 구조 비트 세트

비트를 가로 질러 반복하여 이것을하는 것은 사소한 일입니다.

부울 로직 (및 또는 등)을 사용하여이를 수행 할 수 있습니까?

도움이 되었습니까?

해결책

result = (original & ~mask) | (newbits & mask)

"& ~ 마스크"부분은 | 부분.

"& 마스크"부분은 최신의 적절한 비트 만 사용되어야합니다.

다른 팁

(신규 및 마스크) 또는 (오래된 마스크가 아님)

원본에서 교체 할 비트를 마스킹 한 다음 (마스크가 아님으로 묶어) 새 비트를 (또는)에 넣습니다.

10101010- 원천 비트 세트

00001111- 교체 위치를 보여주는 마스크

00001100 -New 비트 값

11110000- 완화 된 마스크

10100000- 원천 비트 마스크

10101100 -New 비트를 다시 넣습니다


C (++) 코드에서는 다음과 같습니다.

out = (& ~ 마스크) | 초보자;

초보자가 교체해야 할 것 외부에 약간의 비트가 포함되어 있고 마스크로도 포함되어 있다면.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top