2012-10-05 4 views
0

1.571과 같은 십진수를 이진수로 변환하면 정수가 아닌 모든 값이 0이됩니다. MATLAB에서 바이너리로 분수를 표시하는 방법이 있습니까? 그런 다음 dec2bintypecast를 사용 UINT64하고 사용하도록 복식을 변환 할 수MATLAB에서 정수가 아닌 숫자를 이진수로 변환

%The region between 0 and 2*pi is split up into 40 sections 
N=20; 
%The step is an the incrementation amount of the calculated sin 
step= (2*pi)/40 
%Cycle through and calculate the sin at each step 
for i=1:N 
    C_r(i) = sin(step*i) 
end 

for i = 1 : N 
    str_r = dec2bin(C_r(i),24); 
end 

답변

4

:

ui = typecast(pi, 'uint64'); 
dec2bin(ui) 
ans = 

100000000001001001000011111101101010100010001000010110000000000 

typecast 변경하는 방법을 당신이 어떤없이, 당신의 데이터를 보려면 여기

내 코드의 발췌 한 것입니다 실제 유형 변환. 따라서 부호없는 64 비트 정수로 원시 double을 얻습니다. 이제 IEEE 표준 754에 따라 직접 해독해야합니다.

+0

['dec2bin'] (http://www.mathworks.com/help/matlab/ref/dec2bin.html)의 문서에 따르면 ** 정확한 ** 바이너리 표현은 'ui '는 2^52까지입니다. – Matt

0

소수로 소수점을 나타내는 방법에 대한 올바른 대답은 하나도 없습니다. 배정 밀도 부동 소수점이 하나 인 경우 원하는 바이너리 문자열 인 경우 angainor의 대답을 참조하십시오. 다른 옵션은 단 정밀도 부동 소수점 또는 고정 소수점 형식입니다. 고정 소수점에서는 기본적으로 숫자의 크기를 정수로 인코딩합니다.

어쨌든 데이터 소비자는 정확한 형식으로 동의해야만 이진 문자열이 의미가 있습니다. 바이너리 문자열의 사용 사례는 무엇입니까?

관련 문제