2012-09-10 68 views
0

如何獲得Scheme中(整數)號碼的最低有效位? 這是一個相當容易的事情待辦事項?獲得方案中號碼的最低有效位

感謝,

+1

我沒有計劃得心應手,以確保我已經得到了它的權利,但不會'(定義LSB N)(模數n 2))'工作? – Qsario

+0

是的,那是有效的。另一種做法是:'(define(lsb n)( - n(bitwise-and n( - n 1))))'但我之所以問這個的原因是兩種方法中的哪一種是更高效。有什麼想法嗎? – user1508893

+1

@ user1508893看起來非常複雜。爲什麼不只是'(按位和n 1)'? –

回答

2

如果您計劃實現支持SRFI 60,你可以簡單地使用:

(logand n 1) 

bitwise-and的代名詞,一些計劃的實施更喜歡,所以如果你沒有logand,檢查)

否則,如果你願意假設你在two's-complement系統(所有主流平臺),你也可以使用odd?even?

(if (odd? n) 1 0) 
+0

對,我不知道「奇怪」和「偶數」是內置的 – user1508893