R6RS 인 최신 정식 버전을 사용할 것으로 예상되는 버전을 지정하지 않았기 때문에. R6RS는 정확한 비트 산술 (artithmetic) 라이브러리에게 그것의 번호는 고정 폭 구속하지만, >>>
및 <<
이 변화의 eiher 음성 또는 양성 번호 bitwise-arithmetic-shift
으로 구현되지 않기 때문에 >>
이없는 (rnrs arithmetic bitwise (6))
계획을 가지고있다. 특정 오른쪽 및 왼쪽 버전도 있지만 중복되어 있습니다.
구성표에 bitwise-rotate-bit-field
이 있고 지침을 제공하지 않기 때문에 자바 스크립트에서 에뮬레이션한다고 생각합니다.
(import (rnrs)
(rnrs arithmetic bitwise (6)))
(define (make-bit-rot bit-width)
(lambda (n step)
(bitwise-rotate-bit-field n
0
bit-width
(if (negative? step)
(mod step bit-width)
step))))
(define rot-4 (make-bit-rot 4))
(rot-4 #b0001 -1) ; ==> #b1000
(rot-4 #b1000 1) ; ==> #b0001
(rot-4 #b1000 3) ; ==> #b0100
// Seeems you are interested in 32 bit rotate
(define rot-32 (make-bit-rot 32))
내가이 기능은 휴대용되고 싶어 그래서 R5RS 위해 필요 : 귀하의
bit-rol
이 중 하나만 사용하여 구현 될 수있다. – jcubic@jcubic ** R6RS를 지원하는 모든 구현에서 ** 휴대용입니다. Scheme 버전을 알고 있다면 태그를 달 수 있습니다. r7rs, r6rs 및 r5rs는 표준 버전을 지정하는 데 사용할 수있는 태그입니다. 이 답변을 유용하게 사용할 수있는 r6rs 사용자가있을 수 있으므로 답변을 남겨 두겠습니다. – Sylwester