Write function to convert decimal to binary

I am struggling to solve the following question: Write a function `dec_to_bin` that takes a decimal number as input and returns its binary representation as a string. Avoid using the built-in function `dec2bin`. Ensure that the function handles non-integer inputs and outputs the binary representation accurately.

4 commentaires

DGM
DGM le 26 Nov 2023
What's the intended behavior when given non-integer inputs? I have to ask, since dec2bin() truncates the non-integer component.
You know there are lots of threads and FEX submissions already around. There are links over here ->
And you can use the search to find others.
There are three major competing representations for binary integers. There are a large number of competing representations for binary numbers that are not integers.
Reema Noor
Reema Noor le 26 Nov 2023
So how can I write the function for this question? Because I am new to this
Let us start with something simple. If the input is 5.1, then what is "its binary representation as a string" ? You can work it out by hand and show us the major intermediate steps

Connectez-vous pour commenter.

Réponses (1)

DGM
DGM le 5 Déc 2023
Modifié(e) : DGM le 5 Déc 2023
Meh. I'm going to ignore negative numbers for now. The question doesn't seem to actually mention it, though I strongly suspect otherwise.
Since the question isn't answerable without somebody actually stating the requirements, here is a rudimentary fixed-point representation for positive numbers only. Does that meet the requirements? Nobody knows.
N = [6.375 14.5625];
bits = [4 4]; % bits dedicated to [whole fractional] parts
positivefixedpt(N,bits)
ans = 2×8 char array
'01100110' '11101001'
function out = positivefixedpt(in,bits)
% only operates on the magnitude of the input
% sign is ignored
N = abs(in(:)); % vectorize, get magnitude
p = (bits(1)-1):-1:(-bits(2)); % powers corresponding to given bits
out = floor(N./2.^p); % divide
out = char(mod(out,2) + 48); % mod, convert to char
end
Are there edge cases which can break this? Now it's your turn to guess.

Modifié(e) :

DGM
le 5 Déc 2023

Community Treasure Hunt

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

Start Hunting!

Translated by