binary addition for 128 bit

17 views (last 30 days)
Radwa
Radwa on 16 Jan 2015
Commented: Radwa on 17 Jan 2015
I want to addition to 128binary bit represent in char.
  2 Comments
Geoff Hayes
Geoff Hayes on 17 Jan 2015
Radwa - please clarify your statement. Do you have two 128 character strings of ones and zeros that you wish to add as if they were 128-bit integers? If so, are the integers signed or unsigned? What algorithm are you using to implement this?
Radwa
Radwa on 17 Jan 2015
I have 64 binary bits in form of 1*64 char I want to add 1 to it

Sign in to comment.

Accepted Answer

Geoff Hayes
Geoff Hayes on 17 Jan 2015
Radwa - try the following. There could be more efficient algorithms, but this is pretty straightforward. Just save all of the code to a file named binaryAdd.m.
function [sRes] = binaryAdd(s1,s2)
numBits = 64;
% ensure that the strings are the correct size
s1 = validateBits(s1,numBits);
s2 = validateBits(s2,numBits);
% add the two strings together
sRes = repmat('0',1,numBits);
% indicator for a remainder
haveRem = 0;
% iterate over each bit (assume that right-most bit is least significant bit)
for k = numBits:-1:1
% sum the kth bits
v = str2double(s1(k)) + str2double(s2(k)) + haveRem;
haveRem = 0;
% ignore case of the sum being zero, need only check for 1, 2, or 3
if v==1
sRes(k) = '1';
elseif v>1
sRes(k) = num2str(mod(v,2));
haveRem = 1;
end
end
if haveRem
sRes = [repmat('0',1,numBits-1) '1' sRes];
end
end
function [s] = validateBits(s,numBits)
if length(s)>numBits
s = s(1:numBits);
elseif length(s)<numBits
s = [repmat('0',1,numBits-length(s)) s];
end
end
For your example,
binaryAdd(repmat('1',1,64),'1')
the result is a 128-bit string
ans =
00000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000
  4 Comments
Radwa
Radwa on 17 Jan 2015
Mu idea that I have counter with length 64 bit ( 1*64 char) I want to add 1 in every iteration in the counter and if reach the maximum all of them is 1 I want to begin from all zeros
Radwa
Radwa on 17 Jan 2015
yes I want to have the same shape or that shape counter= {' '88' '99' 'aa' 'bb' 'cc' 'dd' 'ee' 'ff'};

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!