Binary Mathematica中[0,1]实的二进制展开中求位的有效方法?

Binary Mathematica中[0,1]实的二进制展开中求位的有效方法?,binary,wolfram-mathematica,expansion,Binary,Wolfram Mathematica,Expansion,众所周知,[0,1]中的任何实数都可以写成以1/2为基数的二进制扩展: x = b1 * 1/2^1 + b2 * 1/2^2 + ... 对于给定的x和索引I,我想要一种有效的方法来获取bi,我认为在Mathematica中没有任何内置的方法可以做到这一点。IntegerDigits和RealDigits似乎帮不上忙,而且相关的函数都不相关 显而易见的解决方案是手动转换,但我希望避免这种情况。我错过什么了吗 编辑:为了将来的参考,我要找的东西可以这样做 BinaryExpansionBit[

众所周知,[0,1]中的任何实数都可以写成以1/2为基数的二进制扩展:

x = b1 * 1/2^1 + b2 * 1/2^2 + ...
对于给定的x和索引I,我想要一种有效的方法来获取bi,我认为在Mathematica中没有任何内置的方法可以做到这一点。IntegerDigits和RealDigits似乎帮不上忙,而且相关的函数都不相关

显而易见的解决方案是手动转换,但我希望避免这种情况。我错过什么了吗

编辑:为了将来的参考,我要找的东西可以这样做

BinaryExpansionBit[p, j] := RealDigits[p, 2, 1, -j][[1]][[1]]
在哪里


给出了我所说的bi

这取决于你所说的“高效”是什么意思。Mathematica可以很容易地转换为二进制,如图所示


否则,您要查找的是
x*2^i
的整数部分的奇偶校验

这取决于你所说的“高效”是什么意思。Mathematica可以很容易地转换为二进制,如图所示


否则,您要查找的是
x*2^i
的整数部分的奇偶校验

我看不出RealDigits有什么问题

rd=realdights[0.1,2]

提供了一个很好的二进制扩展:

(* out: 
    {{1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0,
   0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 
  1, 0, 0, 1, 1, 0, 1, 0}, -3} 
*)
测试:

rd[[1]].Table[1/2^(n - rd[[2]]), {n, Length[rd[[1]]]}]

(* out: 3602879701896397 / 36028797018963968, which is 0.1*)

RealDigit
输出的第二个元素告诉您第一个元素相对于小数点的位置。所以,对于一个真正的r,
0我看不出realdights有什么问题

rd=realdights[0.1,2]

提供了一个很好的二进制扩展:

(* out: 
    {{1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0,
   0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 
  1, 0, 0, 1, 1, 0, 1, 0}, -3} 
*)
测试:

rd[[1]].Table[1/2^(n - rd[[2]]), {n, Length[rd[[1]]]}]

(* out: 3602879701896397 / 36028797018963968, which is 0.1*)

RealDigit
输出的第二个元素告诉您第一个元素相对于小数点的位置。所以,对于一个真正的r,
0谢谢你。我的问题有点傻,不过还是要谢谢你的耐心非常感谢。我的问题有点傻,不过还是要谢谢你的耐心