Ladies_Man

Побитовые операции

Dec 26th, 2013
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 0.69 KB | None | 0 0
  1. (define (integer->byte a)
  2.   (define (iter v k i)
  3.     (begin
  4.       (vector-set! v i (remainder k 2))
  5.       (if (= i 7) v (iter v (quotient k 2) (+ i 1)))))
  6.   (if (or (> a 255) (< a 0))
  7.       'number-conversion-error
  8.       (iter (vector 0 0 0 0 0 0 0 0) a 0)))
  9.  
  10. (define (byte->integer v)
  11.   (define (iter i S)
  12.     (if (= i 8) S (iter (+ i 1) (+ S (* (vector-ref v i) (expt 2 i))))))
  13.   (iter 0 0))
  14.  
  15. (define (get-bit v i)
  16.   (= (vector-ref v i) 1))
  17.  
  18. (define (set-bit a i)
  19.   (begin
  20.     (vector-set! a i 1)
  21.     a))
  22.  
  23. (define (reset-bit a i)
  24.   (begin
  25.     (vector-set! a i 0)
  26.     a))
  27.  
  28. (define (invert-bit a i)
  29.   (begin
  30.     (vector-set! a i (remainder (+ (vector-ref a i) 1) 2))
  31.     a))
Advertisement
Add Comment
Please, Sign In to add comment