careercup-비트 조작 5.1
2529 단어 비트 조작
제목.
32자리의 수, N과 M, 그리고 두 개의 지시 위치의 수, i와 j를 정한다.쓰기 프로그램은 N의 i위에서 j위까지의 값을 M의 값과 동일하게 한다. (즉, M은 N의 하위 문자열이 되고 N의 i위와 j위 사이에 있다.)
예:
입력: N = 1000000000, M = 10101, i = 2, j = 6
출력: N = 100010100100
해답하다
방안1: 먼저 N중 0위에서 i위로 저장(왼쪽으로 닫고 오른쪽으로: [0, i)))하고ret로 기록한 다음에 N중 0위에서 j위 전체 0([0, j])까지 오른쪽으로 j+1위를 이동한 다음에 왼쪽으로 j+1위를 이동하면 얻을 수 있다.마지막으로 위에서 0을 제거한 값이나 상(m코드는 다음과 같습니다.
int update_bits(int n, int m, int i, int j){
int ret = (1 << i) -1;
ret &= n;
return ((n>>(j+1)) << (j+1)) | (m<<i) | ret;
}
방안2: 왼쪽은 모두 1이고 중간 부분은 모두 0이다. (이 부분의 길이는 m의 길이와 같다) 오른쪽은 모두 1인 마스크 마스크를 n과 위치별로 나누면 n의 중간 부분을 0으로 정리한 결과이다.그리고 m와 왼쪽으로 i위를 옮긴 후 위치를 누르거나 최종 결과를 얻는다.
코드는 다음과 같습니다.
int update_bits1(int n, int m, int i, int j){
int max = ~0; // 1
int left = max - ((1 << j+1) - 1);
int right = ((1 << i) -1);
int mask = left | right;
return (n & mask) | (m << i);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
careercup-비트 조작 5.15.1 쓰기 프로그램은 정수 N의 i위에서 j위까지의 값을 정수 M의 값과 동일하게 합니다. 제목. 32자리의 수, N과 M, 그리고 두 개의 지시 위치의 수, i와 j를 정한다.쓰기 프로그램은 N의 i위에서 j위까...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.