- 39
- 0
- 约3.75千字
- 约 4页
- 2019-10-15 发布于江西
- 举报
matlab提供了一个系统函数dec2bin,可以用来进行十进制数的二进制转换,不过功能有限!
在matlab中键入 help dec2bin,如下:
DEC2BIN Convert decimal integer to a binary string.??? DEC2BIN(D) returns the binary representation of D as a string.??? D must be a non-negative integer smaller than 2^52. ???? DEC2BIN(D,N) produces a binary representation with at least??? N bits.???? Example?????? dec2bin(23) returns 10111
可见,这个函数只能转换整数,对非整数就无能为力了.因此,自己编写了matlab小程序,顺便也贴出来,希望对需要的人能有所帮助!^_^
1.小数转换为二进制数
输入参数有2个,一个是输入的小数(小于1),一个是指定转换后的二进制位数!程序源码如下:
y=dectobin(innum,N)%十进制小数转换为二进制数%输入参数为innum和N%innum为输入的十进制小数%N为指定转换后二进制的位数if (innum1)|(N == 0)%判断输入的有效性 ??? disp(error!);??? return;endcount=0;tempnum=innum;record=zeros(1,N);while(N)??? count=count+1;%长度小于N??? if(countN)??????? N=0;%???????? return;??? end??? tempnum=tempnum*2;%小数转换为二进制,乘2取整??? if tempnum1??????? record(count)=1;??????? tempnum=tempnum-1;? ??? elseif(tempnum==1)??????? record(count)=1;??????? N=0;%stop loop??? else?????? record(count)=0;???? ??? endend?y=record;
2.如果要转换整数,则直接调用matlab的dec2bin即可!
3.对于大于1的非整数,可以利用将其分为整数部分和小数部分的方法来处理:
利用matlab的floor函数可以对输入的数(设为innum)向下取整,然后利用innum-floor(innum)就可以得到小数部分,调用上面的函数就可以得到其二进制表达式!
注意,这里有一个小问题,就是dec2bin函数的返回值是一个char array,所以,我们应该先将其转换为double array!可以利用double()进行强制类型转换,得到ASCII码值,减去48就可以得到double array类型的0,1序列!
程序代码如下:
[num,numint,numf]=dectobin1(innum,N)%十进制数转换为二进制数%输入为十进制数innum,以及小数部分的位数N%输出为三个参数num,numint,numf%num为输出的二进制形式%numint为整数部分的二进制表达式%numf为小数部分的二进制表达式sep=5;%整数和小数部分的分隔符if(mod(innum,1)==0)%判断输入是否为整数,mod为取余函数??? numint=dec2bin(innum);??? numint=double(numint)-48;??? numf=zeros(1,N);??? num=[numint,sep,numf];??? returnend;%输入为非整数的情况nint=floor(innum);%整数部分nf=innum-nint;%小数部分res_nint=dec2bin(nint);res_nint=double(res_nint)-48;res_nf=dectobin(nf,N);
numint=res_nint;numf=res_nf;num=[numint,sep,numf];
其中的dectobin函数就是最上面的小数转二进制函数!
4.似乎已经大功告成了,是吗?NO,还有一个问题,那就是负数的情况,在这里,我们采用补码的方式,如果输入为正,则二进制表达式不变,如果 为负,则按位取反并加1.因此,需要对上面的函数加上一个负数判断以及补码转换的功能.最终的表示结果可以采用1QN的格式.补码转换部分程序如下:
[numo
您可能关注的文档
- irtran大气辐射导论南气院课件.ppt
- iso9001-2015版标准所要求的过程识别及过程职能分配表.doc
- ISO9001标准理解教程.doc
- ISO17025_检测和校准实验室能力认可准则.doc
- ISO22000不合格控制程序.doc
- ISO22000最终检验FQC程序.doc
- iso90012015标准内容讲解.ppt
- J__《电工电子技术基础》电子教案_电工电子技术课件_第7章___基本放大电路.ppt
- J2EE快速进阶培训-JSP网页编程.ppt
- J2EE组件使用JDBC应用程序编程接口API中包含的数据对.ppt
- 安徽智能矿山项目实施方案.pdf
- 法律专业实习心得体会(32篇).pdf
- C语言程序设计教案(项目5) 数组程序设计MyBatis的注解开发Java API.pdf
- 湖北省荆门市高二年级上学期期末质量检测语文试题.pdf
- BIMCAD建筑信息模型使用指南.pdf
- 2024年企业财务部出纳会计的工作总结(32篇).pdf
- 2024年邵阳工业职业技术学院单招职业适应性测试题库及答案解析.pdf
- 安徽师范大学面向全球招聘考试笔试题库及答案.pdf
- 2024年全国心理咨询师之心理咨询师二级技能考试黑金试题(详细参考解析).pdf
- 高二历史(新人教选修1第六单元专题及单课公开课一等奖创新教案+学案,8份).pdf
最近下载
- 施工现场各类设备机械安全监理实施细则(参考).doc VIP
- 华东交通大学2015-2016第一学期电牵专业《电机与拖动》期末A卷.doc VIP
- 储气罐专业定期检查表.docx VIP
- JB_T 14788-2024《连续延伸带式输送机》.pdf VIP
- GB 265-1988 运动黏度.pdf
- 山东省青岛市胶州市2024-2025学年七年级上学期期末历史试题(含答案).pdf VIP
- 基于概念整合理论研究母语对二语写作的影响-外国语言学及应用语言学专业论文.docx VIP
- 中国旅游地理第四章旅游区划.ppt VIP
- 《陆上风力发电机组钢混塔架施工关键材料技术规程》.pdf VIP
- 2025年AI图像识别服务合同协议合同.docx VIP
原创力文档

文档评论(0)