Converting a base ten number into a base two number?
14 views (last 30 days)
Show older comments
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 Comments
Answers (2)
Stephen23
on 7 Feb 2019
Edited: Stephen23
on 7 Feb 2019
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 Comments
Shunichi Kusano
on 7 Feb 2019
Edited: Shunichi Kusano
on 7 Feb 2019
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 Comments
See Also
Categories
Find more on Logical in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!