gpt4 book ai didi

matlab - 二进制表示形式的两个整数相加

转载 作者:行者123 更新时间:2023-12-02 03:07:43 24 4
gpt4 key购买 nike

我想实现将两个整数按二进制表示相加的代码。

例如:

a = [1 1 1 0];

b = [1 0 1 1];

所以我实现了以下算法:

function s=add_binary(a,b)
m=length(a);
s=zeros(m+1,0);
n=length(a);
c=0;
for ii=n:-1:1
d=floor((a(ii)+b(ii)+c)/2);
s(ii)=a(ii)+b(ii)+c-2*d;
c=d;
end
s(1)=c;
end

但是,它返回以下结果:

s=add_binary(a,b)

s =

1 0 0 1

这里,左侧应该有一个额外的1,这样它就会显示:

1 1 0 0 1

我哪里出错了?

最佳答案

既然你正在处理二进制数,为什么不使用 logical operators

function s = add_binary(a, b)
a = [0 a];
b = [0 b];
c = a&b;
while any(c)
b = xor(a, b);
a = circshift(c, -1);
c = a&b;
end
s = a+b;
end

还有一个测试:

>> a = randi([0 1], [1 6])
a =
0 1 0 1 0 1
>> b = randi([0 1], [1 6])
b =
1 1 0 0 0 1
>> s = add_binary(a, b)
s =
1 0 0 0 1 1 0

关于matlab - 二进制表示形式的两个整数相加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com