matlab将txt文件中的有符号二进制数转换为十进制数

实现原理

本文实现的是将十二位的有符号的二进制数转换为十进制数:

由于在数字在显示中,如果高位为0会在显示中被省去,所以,这里无法检测到每个数的位数都为12位,也就是无法全部检测到12位的符号位。

比如: 000011110000, 在显示的时候只会显示: 11110000
如果此时检测最高位是否为1, 就只会检测到第8位为1,检测为负数。

所以由于是将12位有符号位的二进制数转换,也就是说,它的范围为:[-2047,2047],正数的最大值: 0111 1111 1111.
只要检测到输出的值大于211-1, 就进行补码的转换。

实现代码

cstr = textread('C:\Users\Documents\0\Qin0.txt','%s');   % 输入txt文件
m = 12;						% 12 bits
n = length(cstr);			% 需要转换的数字个数
Qin0 = zeros(n,1);		
for i=1:n
    Qin0(i) = bin2dec( cstr{i} );	%将所有二进制数转换为无符号位十进制数
    if(Qin0(i)>2047)					% 如果结果大于2047
            Qin0(i)=bin2dec(cstr{i})-2^m;				% 转换为负数
    end
end

代码结果:

输入的12位数字: cstr
转换后的数字:
Qin0

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值