如何将二进制分数转换为十进制?

49意见(过去30天)
rd.
rd. 2019年6月16日
评论: 1月 2019年11月28日
要从二进制转换为十进制我使用此功能:bin2dec('1001')
但是如何知道如何将二进制分数转换为十进制,就像这样:Bin2Dec('0.110001')

接受答案

1月
1月 2019年6月16日
编辑:1月 2019年11月28日
'11001'是指:1 * 2 ^ 0 + 0 * 2 ^ 1 + 0 * 2 ^ 2 + 1 * 2 ^ 3 + 1 * 2 ^ 4或:
[1,1,0,0,1] * 2. ^(4:-1:0)。'
(这就是里面发生的事情 bin2dec. - 检查其源代码。)
'0.10011'表示:1 * 2 ^ -1 + 0 * 2 ^ -2 + 0 * 2 ^ -3 + 1 * 2 ^ -4 + 1 * 2 ^ -5,或:
[1,0,0,1,1] * 2. ^(-1:-1:-5)。'
所以你所要做的就是在十进制点之前和之后拆分部分,并将角色转换为数字。在Matlab中都很容易:
s = strsplit('11001.10011''。');
Intv = s {1} -'0';
Fracv = s {2} -'0';
IntValue = Intv *(2。^(outv)-1:-1:0)。')
Fracvalue = Fracv *(2。^ - (1:numel(Fracv))。')
% 或者:
总和(Fracv ./(2。^(1:numel(Fracv))))))
%[编辑]错字固定:^此前是\之前
3评论
1月
1月 2019年11月28日
谢谢David K.现在修复了。

登录评论。

更多答案(0)

标签

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!