binary addition for 128 bit
조회 수: 15 (최근 30일)
이전 댓글 표시
I want to addition to 128binary bit represent in char.
댓글 수: 2
Geoff Hayes
2015년 1월 17일
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?
채택된 답변
Geoff Hayes
2015년 1월 17일
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
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Whos에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!