binary addition for 128 bit
    6 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
I want to addition to 128binary bit represent in char.
2 Commenti
  Geoff Hayes
      
      
 il 17 Gen 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?
Risposta accettata
  Geoff Hayes
      
      
 il 17 Gen 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 Commenti
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Logical in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

