read csv file and convert 'double' to binary

f = csvread('S21.csv',double=>binary);
I read .csv file in 'double'
ex) f(1,1) = 1.5111
I want to convert it to binary, 010101010,
no data loss as possible as.
How can I do???
Thank you for your coperation

Answers (1)

See dec2hex(): https://www.mathworks.com/help/matlab/ref/dec2hex.html or num2hex(): https://www.mathworks.com/help/matlab/ref/num2hex.html if you want to use IEEE-754 format for conversion.

4 Comments

je heo
je heo on 8 Oct 2020
Edited: je heo on 8 Oct 2020
thank you for your answer
but i want only binary form which has '0100010101' .
The example you posted first had 9 bits, and this version has 10 bits. How many bits of output are you looking for?
reshape(dec2bin(typecast(1.5111, 'uint8'),8).', 1, [])
ans = '0000010111000101100011110011000101110111001011011111100000111111'
thank you for your answer.. ^^
Note that the above is just one representation of 1.5111, and that it is not to be interpreted as something like
00000101.11000101100011110011000101110111001011011111100000111111
You get closer to that kind of representation with
reshape(dec2bin(typecast(swapbytes(1.5111), 'uint8'),8).', 1, [])
ans = '0011111111111000001011010111011100110001100011111100010100000101'
but this again is not to be interpreted as a binary fraction, at least not without careful examination.
The first bit is the sign bit. The next 11 bits are the exponent, with a bias of 1022. The remaining 52 bits are a binary fraction with an implied "1." in front of it.

Sign in to comment.

Categories

Asked:

on 8 Oct 2020

Commented:

on 12 Oct 2020

Community Treasure Hunt

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

Start Hunting!