scheme - 在Scheme中查找一个数字是否是2的幂

标签 scheme bitwise-operators

我对 Scheme 还很陌生,我正在尝试从头开始自己学习它。我被困在这个问题的语法上。我知道如果我想知道一个数字是否是 2 的幂,例如在 C 语言中,我会这样做:

return (x & (x - 1)) == 0;

这将返回真或假。我怎样才能将其转换为 Scheme 中的几行简单的行?

最佳答案

既然你正在努力学习这门语言,我会给你一个提示。

Scheme 有一个名为 (bitwise-and ...) 的函数,它相当于 C 中的 & 运算符(还有 (bitwise-xor ...)(bitwise-not ..) 等,它们做的是预期的事情。

(这里是 (bitwise-and ...) 函数的文档)

鉴于此,您能否将您在问题中写的内容翻译成 Scheme 代码?

N.B:对于这样的问题,你真的不需要在使用 Scheme 时使用按位运算。实际上,您应该编写一个(可能可能是尾)递归函数来为您计算。

关于scheme - 在Scheme中查找一个数字是否是2的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1675086/

相关文章:

c - 如何用整数中的另一组半字节替换给定的半字节

php - 什么时候应该使用按位运算符?

function - scheme2lisp::define 函数并将其作为参数传递

scheme - 如何捕获Scheme中 `string-search-forward`的返回值?

list - Scheme/Racket/Lisp 中嵌套列表的 Minimax 操作?

scheme - 如何在方案中将列表转换为代码/lambda?

javascript - 解释按位运算符在 Canvas 图像数据像素颜色分配中的使用

javascript - 打印所有可以通过放置空格组成的字符串

c# - 如何重置ulong中的单个位?

recursion - 尝试对 n 个数字的乘积求 n 次方根有困难