我想将最后四位二进制数串联成一个数字,我已尝试过以下代码
x8=magic(4)
x8_n=dec2bin(x8)
m=x8_n-'0'
给出了以下输出 m =
1 0 0 0 0
0 0 1 0 1
0 1 0 0 1
0 0 1 0 0
0 0 0 1 0
0 1 0 1 1
0 0 1 1 1
0 1 1 1 0
0 0 0 1 1
0 1 0 1 0
0 0 1 1 0
0 1 1 1 1
0 1 1 0 1
0 1 0 0 0
0 1 1 0 0
0 0 0 0 1
现在我想每行最后4位并将其转换为整数
答案 0 :(得分:3)
n = 4; %// number of bits you want
result = m(:,end-n+1:end) * pow2(n-1:-1:0).'; %'// matrix multiplication
无论如何,直接在x8
使用mod
会更容易,而不需要m
的中间步骤:
result = mod(x8(:), 2^n);
在你的例子中:
result =
0
5
9
4
2
11
7
14
3
10
6
15
13
8
12
1
答案 1 :(得分:2)
这可能是另一种方法 -
n = 4; %%// number of bits you want
out = bin2dec(num2str(m(:,end-n+1:end)))
输出 -
out =
0
5
9
4
2
11
7
14
3
10
6
15
13
8
12
1