MATLAB:bitand背后的逻辑并获得所有可能的状态

时间:2012-07-11 09:15:02

标签: matlab binary bit-manipulation

我获得了此代码

m0=0.8;
m1=1.2;
k=6; %where k can take values between 2 and 10;
kbar=2^k;
g_m = [0:(kbar-1)];

for i = 1: (kbar)
  g=1;
  for j=0:(kbar-1)
    if(bitand(g_m(i),2^j))~=0
      g=g*m1;
    else
      g=g*m0;
    end
  end
  g_m(i)=g %results in a 1xN vector where N = all the possible states
end

我的问题是为什么bitand的功能允许您生成所有可能的“状态”? 我不太确定我是否真的理解bit和背后的逻辑并且在搜索它所比较的​​值是否为bit = 1,因此ans=1

1 个答案:

答案 0 :(得分:1)

bitand取2个值,将它们转换为二进制,在两个值之间进行逻辑AND,并将结果从逻辑AND返回为十进制数。所以对于2个给定的数字,它只返回一个值