PROGRAM IN MATLAB FOR DIVISION OF TWO UNSIGNED INTEGER BINARY NUMBERS
(N-BIT NUMBERS)
(N-BIT NUMBERS)
. To implement non-restoring division algorithm in digital computer
function lab5_coa
n=input('enter n:');
a=input('enter a:');
b=input('enter b:');
c=b;
q=a;
carry=0;
for i=1:1:n
a(1,i)=0;
end
for i=n:-1:1
if(c(1,i)==1)
c(1,i)=0;
else
c(1,i)=1;
end
end
for i=1:1:n-1
x(1,i)=0;
end
x(1,n)=1;
for i=n:-1:1
sum=xor(xor(x(1,i),c(1,i)),carry);
carry=or(and(x(1,i),c(1,i)),and(xor(x(1,i),c(1,i)),carry));
r(1,i)=sum;
end
c=r;
for i=1:1:n-1
a(1,i)=a(1,i+1);
end
a(1,n)=q(1,1);
for i=1:1:n-1
q(1,i)=q(1,i+1);
end
carry=0;
for i=n:-1:1
sum=xor(xor(a(1,i),c(1,i)),carry);
carry=or(and(a(1,i),c(1,i)),and(xor(a(1,i),c(1,i)),carry));
a(1,i)=sum;
end
%LOOPING CONDITION
for count=1:1:n-1
if (a(1,1)==1)
q(1,n)=0;
for i=1:1:n-1
a(1,i)=a(1,i+1);
end
a(1,n)=q(1,1);
for i=1:1:n-1
q(1,i)=q(1,i+1);
end
carry=0;
for i=n:-1:1
sum=xor(xor(a(1,i),b(1,i)),carry);
carry=or(and(a(1,i),b(1,i)),and(xor(a(1,i),b(1,i)),carry));
a(1,i)=sum;
end
else
q(1,n)=1;
for i=1:1:n-1
a(1,i)=a(1,i+1);
end
a(1,n)=q(1,1);
for i=1:1:n-1
q(1,i)=q(1,i+1);
end
carry=0;
for i=n:-1:1
sum=xor(xor(a(1,i),c(1,i)),carry);
carry=or(and(a(1,i),c(1,i)),and(xor(a(1,i),c(1,i)),carry));
a(1,i)=sum;
end
end
end
% After completion of loop for count n-1
if(a(1,1)==1)
q(1,n)=0;
carry=0;
for i=n:-1:1
sum=xor(xor(a(1,i),b(1,i)),carry);
carry=or(and(a(1,i),b(1,i)),and(xor(a(1,i),b(1,i)),carry));
a(1,i)=sum;
end
else
q(1,n)=1;
else
q(1,n)=1;
end
fprintf('Remainder =');
disp(a);
fprintf('Quotient=');
disp(q);
end