비트 이진수 (C 언어로)의 왼쪽으로 순환 시프 팅을 구현하는 알고리즘을 찾고 있습니다. 알고리즘은 >>처럼 작동합니다. 오른쪽 슬롯에는 0이 아닌 왼쪽에서 숫자가 채워집니다.순환 쉬프트 C
오른쪽으로 이동하는 경우.
비트 이진수 (C 언어로)의 왼쪽으로 순환 시프 팅을 구현하는 알고리즘을 찾고 있습니다. 알고리즘은 >>처럼 작동합니다. 오른쪽 슬롯에는 0이 아닌 왼쪽에서 숫자가 채워집니다.순환 쉬프트 C
오른쪽으로 이동하는 경우.
여기에서 생각한 것은 상위 n 비트 (n 비트 시프트 용)와 or
을 시프트 된 번호의 오른쪽으로 가져 오는 것입니다.
시작해야합니다.
이것이 사실이지만, 맨 위의 n 비트와 오른쪽 비트는 어떻게 처리합니까? –
@Rudy : 오른쪽 시프트 사용 –
예, 분명합니다. 그것은 여전히 사람들에게 비트를 가면 어떻게 옮겨야하는지 등을 말하지 않습니다. –
#define NUM_BITS_IN_INT ((sizeof(int) * 8)
int rotleft(int num, int shift)
{
return (num << shift) | (num >> (NUM_BITS_IN_INT - shift));
}
int rotright(int num, int shift)
{
return (num >> shift) | (num << (NUM_BITS_IN_INT - shift);
}
여기서 질문은 무엇입니까? 너 뭐 벌써 해봤 니? Stack Overflow는 프로그래밍과 관련된 특정 문제를 논의하기위한 웹 사이트입니다. 그것은 '무료 코드 서비스'가 아닙니다. 그것이 당신이 찾고있는 것이라면, 다른 곳을보십시오. –
[단어의 비트를 회전하는 방법] 가능한 복제본 (http://stackoverflow.com/questions/4207546/how-to-rotate-the-bits-in-a-word) – zneak
가능한 중복 http :// /tackoverflow.com/questions/2943265/circular-shift-c –