Converting binary to decimal and vice versa, please help!!
7 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I'm having trouble converting strings that represent binary numbers to decimal and vice versa. The main issue is that I'm unsure of how to deal with the decimal point, say converting -11.11 to decimal. This is a homework assignment, so I'm not allowed to use the built in functions.
Here's my code for one of the two:
function decimal= mybin2real(binarystring)
decimal = 0;
for i = 1 : length(binarystring)
decimal = decimal + str2num(binarystring(i)) * 2^(length(binarystring) - i);
end
decimal
end
I was thinking about finding where the decimal point was using strfind, but i'm not sure how to implement it in the matlab code.
6 comentarios
Daniel Shub
el 2 de Nov. de 2012
At the command line type
type bin2dec
or
edit bin2dec
this will let you see the source code.
Respuesta aceptada
Matt Fig
el 2 de Nov. de 2012
Editada: Matt Fig
el 2 de Nov. de 2012
Here I have simply fixed your code. You were really close!
function decimal= mybin2real(binarystring)
% Converts an input string of 1s and 0s to a number.
Ind = strfind(binarystring, '.');
L = length(binarystring);
if isempty(Ind)
Ind = L+1;
end
Num1 = binarystring(1:Ind-1);
LN1 = length(Num1);
Num2 = binarystring(Ind+1:end);
LN2 = length(Num1);
dec1=0;
for ii = 1 : LN1
dec1 = dec1 + str2double(Num1(LN1-ii+1)) * 2^(ii-1);
end
dec2=0;
for ii = 1 : length(Num2)
dec2 = dec2 + str2double(Num2(ii)) * 2^-(ii);
end
decimal=dec1+dec2;
6 comentarios
Matt Fig
el 2 de Nov. de 2012
No. As the very first thing....
if binarystring(1)=='-'
binarystring = binarystring(2:end);
F = -1;
else
F = 1;
end
Then at the end:
decimal = decimal*F;
Más respuestas (2)
Andrei Bobrov
el 2 de Nov. de 2012
Editada: Andrei Bobrov
el 3 de Nov. de 2012
decimal = (binarystring-'0')*pow2(size(binarystring,2)-1:-1:0).';
ADD
binarystring = '-11.11';
b = binarystring - '0';
[~,s] = ismember([-3,-2],b);
p = b(b >= 0);
decimal = sign(b(1))*p*pow2(diff(s) + (-2:-1:-1-numel(p)))';
2 comentarios
prince kumar
el 15 de Jul. de 2018
Editada: KSSV
el 23 de Oct. de 2019
n=input('input binary no.=');
n=int2str(n); s=0;
for i=1:numel(n)
s=s+(str2num(n(i))*(2.^(numel(n)-i)));
end
s
0 comentarios
Ver también
Categorías
Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!