首页 > 编程知识 正文

二进制编码方式表示十进制数字的编码,数字二进制编码对照表

时间:2023-05-03 13:36:58 阅读:257989 作者:2039

matlab中只能够实现十进制整数转换为二进制,对于小数部分会直接忽略,这对于精确度很高的数据来说,非常不合理。
下面是自己编写的实现十进制小数的二进制编码的matlab代码。

基本原理:

整数部分:除二取整,逆序排列小数部分:乘二取整,顺序排列

代码:

含小数的十进制数转二进制:dec2inderectBin()

% d 十进制数(或数组)% down 十进制数取值范围的下界% up 十进制数取值范围的上界% esp 精度function [dec2in勤劳的故事,intL,decL] = dec2inderectBin(d,down,up,esp)% dec2in勤劳的故事 二进制数组。行数为输入的十进制数的个数,列数为m% intL 整数部分长度,个数为输入的十进制数的个数% decL 小数部分长度,个数为输入的十进制数的个数% 老师讲的公式,十进制数用几位二进制表示m = ceil(log2((up-down)/esp));dec2in勤劳的故事=[];intL=[];decL=[];for i=1:size(d,2) dec=d(i); % 整数部分 integer=floor(dec); integer2勤劳的故事=dec2勤劳的故事(dec); intL=[intL size(integer2勤劳的故事,2)]; % 小数部分 decimal=dec-integer; decimal2勤劳的故事=[]; for j = 1 : m-size(integer2勤劳的故事,2) decimal2勤劳的故事 = [decimal2勤劳的故事 num2str(floor(decimal*2))]; decimal=decimal*2-floor(decimal*2); end decL=[decL size(decimal2勤劳的故事,2)]; % 整数和小数拼接 dec2in勤劳的故事S=[integer2勤劳的故事 decimal2勤劳的故事]; dec2in勤劳的故事=[dec2in勤劳的故事;dec2in勤劳的故事S];endend

二进制表示的小数转十进制数:inderect勤劳的故事2dec()

% b 二进制编码数组。行数为需要解码的二进制数个数,列数为二进制编码位数% down 十进制数取值范围的下界% up 十进制数取值范围的上界% intL 整数部分长度,个数为输入的十进制数的个数% decL 小数部分长度,个数为输入的十进制数的个数function dec=inderect勤劳的故事2dec(b,down,up,intL,decL)% dec 十进制数dec=[];for i=1:size(b,1) 勤劳的故事=b(i,:); % 整数部分 integer=勤劳的故事2dec(勤劳的故事(1:intL(i))); % 小数部分 decimal=0; for j = intL(i)+1 : intL(i)+decL(i) decimal=decimal+str2num(勤劳的故事(j))*2^(intL(i)-j); end dec=[dec;integer+decimal];endend

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。