From b1f5c3f8d6671b4331cef1dcebdf63b7a43a3a2b Mon Sep 17 00:00:00 2001 From: priyanka Date: Wed, 24 Jun 2015 15:03:17 +0530 Subject: initial commit / add all books --- 273/CH25/EX25.29/ex25_29.sce | 108 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100755 273/CH25/EX25.29/ex25_29.sce (limited to '273/CH25/EX25.29') diff --git a/273/CH25/EX25.29/ex25_29.sce b/273/CH25/EX25.29/ex25_29.sce new file mode 100755 index 000000000..db2827c54 --- /dev/null +++ b/273/CH25/EX25.29/ex25_29.sce @@ -0,0 +1,108 @@ + +clc; +clear; +//Example 25.29 +//addition of negative number by by two's complement method +//bb=input(" Enter the first no (in decimal) :"); +//aaa=input(" Enter the negative number that has to be added"); +bb=14; +aaa=-7; +if aaa<0 then + aa=-1*aaa; +else aa=aaa; +end +a=0; +b=0; +q=0; +for i=1:5 //converting from decimal to binary + x=modulo(aa,2); + a= a + (10^q)*x; + aa=aa/2; + aa=floor(aa); + q=q+1; +end +q=0; +for i=1:5 //converting from decimal to binary + y=modulo(bb,2); + b= b + (10^q)*y; + bb=bb/2; + bb=floor(bb); + q=q+1; +end +for i=1:5 + a1(i)=modulo(a,10); + a=a/10; + a=round(a); + +end +for i=1:5 + b1(i)=modulo(b,10); + b=b/10; + b=round(b); +end; +if aaa<0 then// making one's complement of the negative number + for i=1:5 + a1(i)=bitcmp(a1(i),1); + end + + car(1)=0; + +for i=1:5 + c1(i)=a1(i)+b1(i)+car(i); + if c1(i)== 2 then + car(i+1)= 1; + c1(i)=0; + elseif c1(i)==3 then + car(i+1)= 1; + c1(i)=1; + else + car(i+1)=0; + end; +end; +re=0; +format('v',18); + for i=1:5 + re=re+(c1(i)*(10^(i-1))) //result of one's complement addition + end; +for i=1:5 + s(i)=modulo(re,10); + re=re/10; + re=round(re); +end; +if car(6)==1 then// checking carry + car2(1)=1; + +for i=1:5 + re1(i)=s(i)+car2(i);//addition of carry after one's complement addition + if re1(i)== 2 then + car2(i+1)= 1; + re1(i)=0; + elseif re1(i)==3 then + car2(i+1)= 1; + re1(i)=1; + else + car2(i+1)=0; + end; +end; + + re2=0; +format('v',18); + for i=1:5 + re2=re2+(re1(i)*(10^(i-1))) + end; + + disp(re2,'difference is') ; + +else + for i=1:5 + re1(i)=bitcmp(s(i),1); + end + re2=0; + for i=1:5 + re2=re2+(re1(i)*(10^(i-1))) + end; + re2=-1*re2; + disp(re2,'difference is') ; + end; + + \ No newline at end of file -- cgit