Binary 如何检查整数';标准ML中的s base-2表示法?

Binary 如何检查整数';标准ML中的s base-2表示法?,binary,sml,Binary,Sml,我试图在SML中实现一个重复平方算法。我希望它是尾部递归的 目标是将所有x^k相乘,其中k是2^m,2^m是n的二进制表示形式中的1 例如,对于x^25,计算x^1*x^8*x^16,因为16+8+1=25 我不知道如何用二进制部分来表示一个数字,也不知道如何使用逐位运算来手动检查(因为从我所知道的情况来看,SML没有逐位运算) 我更喜欢使用现成的SML库,因此不导入其他库 这是一个家庭作业问题,所以如果你能回答而不完全泄露,那就太好了 编辑:我正在使用新泽西州的SML。多亏了马特,我找到了解决

我试图在SML中实现一个重复平方算法。我希望它是尾部递归的

目标是将所有x^k相乘,其中k是2^m,2^m是n的二进制表示形式中的1

例如,对于x^25,计算x^1*x^8*x^16,因为16+8+1=25

我不知道如何用二进制部分来表示一个数字,也不知道如何使用逐位运算来手动检查(因为从我所知道的情况来看,SML没有逐位运算)

我更喜欢使用现成的SML库,因此不导入其他库

这是一个家庭作业问题,所以如果你能回答而不完全泄露,那就太好了


编辑:我正在使用新泽西州的SML。

多亏了马特,我找到了解决方案

使用SML basis库中的单词类型,我使用了:


Word.andb(Word.fromInt(x)、Word.fromInt(y))>Word.fromInt(0)

虽然sml没有任何按位运算符,但sml基库有一个“基本类型”,它具有执行按位运算的函数。您能告诉我在哪里可以找到按位运算符吗?当然,如果我之前说得太模糊,请原谅,谢谢!如果可能的话,你能给我一个关于如何使用andb的例子吗?我一直在sml终端中尝试,但我尝试的所有语法可能性都不起作用。在smlnj中,这对我来说是有效的:Word.andb(Word.fromInt(1),Word.fromInt(0));你可以随时“打开单词”,以避免在单词前面加前缀。这不是答案。你应该在下议院投票人到来之前将其删除。我添加此项是因为我想将其标记为已解决,但似乎我需要等待2天。我将编辑以获得解决我问题的答案。