我想对两个二进制数执行逻辑and
操作。我尝试使用bitand
,但该函数只能用于char
数据类型。
我想对两个二进制数字执行and
。
例如:
a=1101;
b=1010;
然后a and b
的输出必须是
c=1000;
以下是我的尝试:
K=input('feed the value');
M=2^K;
S=input('feed the data');
disp(M);
s=dec2bin(S);
m=dec2bin(M-1);
q=bitand(s,m);
disp(q);
答案 0 :(得分:1)
并且我有一个概念,即bitand仅适用于数据类型char
那是错的。 bitand
需要整数输入参数。
示例:
>> K=9
K =
8
>> L=12
L =
12
>> bitand(K,L)
ans =
8
答案 1 :(得分:1)
使用s
将字符串s-'0'
转换为二进制向量。对m
执行相同操作。然后,您可以应用and
(or &
):
n = 4; %// specify number of bits
s = dec2bin(S,n)-'0';
m = dec2bin(M-1,n)-'0';
q = and(s,m); %// Or: q = s & m;
或使用de2bi
(通讯工具箱),它直接将数字转换为二进制矢量:
n = 4; %// specify number of bits
s = de2bi(S,n,'left-msb');
m = de2bi(M-1,n,'left-msb');
q = and(s,m); %// Or: q = s & m;