【问题标题】:How do I inspect an integer's base-2 representation in Standard ML? [duplicate]如何在标准 ML 中检查整数的 base-2 表示? [复制]
【发布时间】:2016-03-04 07:37:06
【问题描述】:

我正在尝试在 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 没有任何按位运算符,但 sml 基础库确实有一个“基本类型”,它具有执行按位运算的函数
  • 你能告诉我在哪里可以找到按位与吗?
  • 当然,对不起,如果我在sml-family.org/Basis/word.html#SIG:WORD.andb:VAL之前太模糊了
  • 谢谢!如果可能的话,你能给我一个关于如何使用andb的例子吗?我一直在 sml 终端中尝试它,但我尝试的所有语法可能性都不起作用。
  • 在 smlnj 这对我有用: Word.andb(Word.fromInt(1), Word.fromInt(0));您可以随时“打开 Word”,以避免在它们前面加上 Word。

标签: binary sml


【解决方案1】:

感谢 matt,我找到了解决方案。

使用 SML 基础库中的 Word 类型,我使用了:

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

【讨论】:

  • 这不是答案。您应该在反对者出现之前将其删除。
  • 我添加这个是因为我想将它标记为已解决,但似乎我需要等待 2 天。我将进行编辑以获得解决我问题的答案。
猜你喜欢
  • 2015-04-05
  • 2012-04-13
  • 2019-08-02
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2022-07-04
  • 2020-05-12
  • 1970-01-01
相关资源
最近更新 更多