binary to decimal when binary with radix point

I have to convert the following binary number to decimal: 11000101.101
I am using
bin2dec('binary number')
but is does not work with a radix point

回答 (2 件)

Stephen23
Stephen23 2016 年 12 月 30 日
編集済み: Stephen23 2016 年 12 月 30 日

0 投票

This is easy to do yourself:
>> str = '11000101.101';
>> idx = str~='.';
>> vec = 1:sum(idx);
>> pwr = sum(str(idx)==str(vec)) - vec;
>> sum((str(idx)-'0') .* 2.^pwr)
ans =
197.625
Walter Roberson
Walter Roberson 2016 年 12 月 30 日

0 投票

parts = strsplit(str, '.') ;
dec2bin(parts{1}) + dec2bin(parts{2})/2^length(parts{2})

3 件のコメント

Harel Harel Shattenstein
Harel Harel Shattenstein 2016 年 12 月 30 日
編集済み: Harel Harel Shattenstein 2016 年 12 月 30 日
I should use a command as + does not seems to be defined for those variables (parts{1} and parts{2} are strings)
Stephen23
Stephen23 2016 年 12 月 30 日
@Harel Harel Shattenstein: there is a mistake in this untested code, the function dec2bin should actually be bin2dec. Otherwise it is correct.
Walter Roberson
Walter Roberson 2016 年 12 月 30 日
parts = strsplit(str, '.') ;
bin2dec(parts{1}) + bin2dec(parts{2})/2^length(parts{2})
That's what I get for posting at 3 in the morning ;-)

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

タグ

質問済み:

2016 年 12 月 30 日

コメント済み:

2016 年 12 月 30 日

Community Treasure Hunt

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

Start Hunting!

Translated by