memmove 함수의 비트버전입니다. memmove 함수가 특정한 바이트 영역을 다른 영역으로 이동(복사)한다면, BitMove 함수는 특정한 비트 영역을 다른 영역으로 이동(복사) 합니다.
즉,
상수 비트 포인터 src가 가리키고 있는 비트부터 bit_size개의 비트 영역을,
비트 포인터
dst가 가리키고 있는 비트부터 bit_size개의 비트 영역으로 이동(복사) 합니다.
Windows 10, 비주얼 스튜디오 2019 환경에서는 memmove 함수에 비해 대략 5배 정도 느린 성능을 보이는 것으로 확인됩니다(비트 쉬프트 및 비트 AND|OR 연산자의 사용으로 인한 듯...).
따라서 memmove 함수로 할수 있는 작업은 memmove 함수로 처리하고, 반드시 비트 단위로 처리해야 하는 경우만 BitMove 함수를 사용하는것이 바람직합니다.
memmove 함수와 마찬가지로, BitMove 함수는 src의 영역과 dst의 영역이 겹치더라도, src 영역의 값의 손실 없이 이동(복사)되도록 이동(복사)를 수행합니다.
즉 src 영역과 dst 영역이 겹친 경우, src와 dst의 상대적인 위치에 따라 원본 영역의 앞에서부터 이동(복사)를 할 수도 있고 원본 영역의 뒤에서부터 이동(복사)를 할 수도 있습니다.