문제
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 = (& ~ 마스크) | 초보자;
초보자가 교체해야 할 것 외부에 약간의 비트가 포함되어 있고 마스크로도 포함되어 있다면.
제휴하지 않습니다 StackOverflow