'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))))))