Converting a base ten number into a base two number?
    조회 수: 6 (최근 30일)
  
       이전 댓글 표시
    
The number is 47.1875 in base ten, I need to write a script to convert this into base two.  So far, I have written for before the decimal place:
x=47;
index=1;
base=2;
q=floor(x/base);
while q>0
    q=x/base;
    q=floor(q);
    r=[rem(x, base)]
    result(index)=r;
    index=index+1;
    x=q;
end
I am having a difficult time with the script for after the decimal place.  Any help would be greatly appreciated!
댓글 수: 0
답변 (2개)
  Stephen23
      
      
 2019년 2월 7일
        
      편집: Stephen23
      
      
 2019년 2월 7일
  
      x  = 47.1875;
% Integer part:
n = 1+fix(log2(x));
I = nan(1,n);
y = fix(x);
for k = n:-1:1
    I(k) = fix(mod(y,2));
    y = fix(y/2);
end
% Fractional part:
n = 12; % places after the radix point.
F = nan(1,n);
y = mod(x,1);
for k = 1:n
    F(k) = fix(2*y);
    y = mod(2*y,1);
end
% Output:
s = char([I,-2,F]+'0')
giving:
s = 101111.001100000000
댓글 수: 0
  Shunichi Kusano
    
 2019년 2월 7일
        
      편집: Shunichi Kusano
    
 2019년 2월 7일
  
      Interesting. Another way to utilize your code. This is a kind of normalization. After calculation, the number of digits is restored.
x_raw = 47.1875;
index=1;
base=2;
n = 12; % places after the radix point.
x = double(x_raw) / double(base)^-n; % normalization
q=floor(x/base);
while q>0
    q=x/base;
    q=floor(q);
    r=[rem(x, base)];
    result(index)=floor(r);
    index=index+1;
    x=q;
end
res2 = reverse(insertAfter(num2str(result,'%1d'), n, '.')) % shifting "." n digits.
hope this helps.
댓글 수: 2
  Stephen23
      
      
 2019년 2월 7일
				This code gives the following error:
Undefined function or variable 'x'.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


