필터 지우기
필터 지우기

conversion from binary to decimal

조회 수: 1 (최근 30일)
Eli
Eli 2020년 1월 2일
댓글: Walter Roberson 2020년 1월 2일
disp('conversion from binary to decimal');
z=input('give a floating point number ','s');
n=strfind(z,'.'); %index of the .
z1=z(1:n-1); %z1 vector
disp(z1);
z2=z(n+1:length(z)); %z2 second part after .
x=bin2dec(z1); %bin 2 dec transformation of the first part of the number (before .)
%transformation of the decimal part of the number
b=0.5;
y=0;
for i=1:length(z2)
y=y+(z2(i)-48)*b; %what is -48, it is set for precsion?
b=0.5*b;
end
fprintf('Il numero in base 10 e'':\n');
-48 is set for a better precision in the conversion from binary to decimal or there is another reason?
Thank you!!

채택된 답변

David Hill
David Hill 2020년 1월 2일
No, the -48 is converting the ascii character '0' or '1' to a number.
  댓글 수: 2
John D'Errico
John D'Errico 2020년 1월 2일
And that happens because '0' happens to be ascii 48.
+('0')
ans =
48
Walter Roberson
Walter Roberson 2020년 1월 2일
In all character sets that I have been able to find since the 1930's, IBM's EBCDIC is the only one that did not encode the characters '0' through '9' as consecutive positions in the table with '0' being the low value (EBCDIC coded '1' as the low value and '0' followed '9' if my memory is correct)
Therefore for all computer languages that you are ever likely to encounter, you can rely on the fact that the character code for a particular single digit "Arabic numeral" is that many positions after the position for the character code for '0'.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Numbers and Precision에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by