【发布时间】:2017-11-17 08:35:39
【问题描述】:
我得到了包含这样一个循环的 Matlab 代码:
for n = 1:2^10,
bitget(n-1,10)*2^4;
end;
我遇到的问题是 Matlab (Octave) 显然在右侧添加了填充位:
octave:15> bitget(5,1:10)
ans =
1 0 1 0 0 0 0 0 0 0
因此:
octave:14> bitget(5,10)
ans = 0
而 python 不添加这些位,因此会产生错误。
对于这种特殊情况,我是否相信上述 Matlab 行 bitget(n-1,10)*2^4; 可以转换为 python 为 (lambda x: 1 if x == 2**9 else 0)(n)*2**4,因为在我看来,如果 n 的二进制表示跨度,Matlab bitget(5,10) 只会产生 1 10 位,在这种情况下是 2^9?
【问题讨论】: