[转载]二进制,十进制小数互转

科学记数法:

在科学记数法中,一个数被写成一个1与10之间的实数与一个10的n次幂的积
    782300=7.823×105
    0.00012=1.2×10−4
    10000=1×104

在电脑或计算器中一般用E或e(英语Exponential)来表示10的幂:

7.823E5=782300
    1.2e−4=0.00012

======================================================================

从小数点左边开始算,依次列为第0、1、2……位

从小数点右边开始算,依次列为第-1、-2、-3...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案。
如0.111 = 0*2^0+1*2^(-1)+1*2^(-2)+1*2^(-3)

0.11011 = 0*2^0+1*2^(-1)+1*2^(-2)+0*2^(-3)+1*2^(-4)+1*2^(-5)

==================================================================

十进制小数→→→→→二进制小数 方法:“乘2取整”

对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.
如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位
如:0.25的二进制
0.25*2=0.5 取整是0
0.5*2=1.0    取整是1
即0.25的二进制为 0.01 ( 第一次所得到为最高位,最后一次得到为最低位)

0.8125的二进制

0.8125*2=1.625   取整是1

0.625*2=1.25     取整是1

0.25*2=0.5       取整是0

0.5*2=1.0        取整是1

即0.8125的二进制是0.1101(第一次所得到为最高位,最后一次得到为最低位)

十进制小数→→→→→八进制小数 方法:“乘8取整”

0.71875)10 =(0.56)8

0.71875*8=5.75 取整5

0.75*8=6.0      取整6
即0.56

十进制小数→→→→→十六进制小数方法:“乘16取整”例如:

(0.142578125)10=(0.248)16

0.142578125*16=2.28125 取整2

0.28125*16=4.5          取整4

0.5*16=8.0              取整8

即0.248

非十进制数之间的转换

(1)二进制数与八进制数之间的转换

转换方法是:以小数点为界,分别向左右每三位二进制数合成一位八进制数,或每一位八进制数展成三位二进制数,不足三位者补0。例如:

(423。45)8=(100 010 011.100 101)2

(1001001.1101)2=(001 001 001.110 100)2=(111.64)8

(2)二进制与十六进制转换

转换方法:以小数点为界,分别向左右每四位二进制合成一位十六进制数,或每一位十六进制数展成四位二进制数,不足四位者补0。例如:

(ABCD。EF)16=(1010 1011 1100 1101.1110 1111)2

(101101101001011.01101)2=(0101 1011 0100 1011.0110 1000)2=(5B4B。68)16

时间: 2025-01-25 02:22:44

[转载]二进制,十进制小数互转的相关文章

二进制流互转

1 /// <summary> 2 /// 二进制数组转流 3 /// </summary> 4 /// <param name="bytes"></param> 5 /// <returns></returns> 6 public static Stream BytesToStream(byte[] bytes) 7 { 8 Stream stream = new MemoryStream(bytes); 9 r

利用ZYNQ SOC快速打开算法验证通路(1)——MATLAB浮点数与定点二进制补码互转

最近本人一直在学习ZYNQ SOC的使用,目的是应对科研需要,做出通用的算法验证平台.大概思想是:ZYNQ PS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更新硬件算法模块配置寄存器内容,同时可计算分析PL端算法实现性能指标.PL端的FPGA逻辑则负责算法的硬件实现,以探索高效并行硬件架构.为此本人后续会持续编写<利用ZYNQ SOC快速打开算法验证通路>系列专题博文,在各个阶段进行些基础性总结. MATLAB中数据为双精度浮点型,因此打开算法验证通路

进制(二进制、十进制、八进制、十六进制)

对于整数,有四种表示方式: 二进制:0,1 ,满2进1.以0b或0B开头. 十进制:0-9 ,满10进1. 八进制:0-7 ,满8进1. 以数字0开头表示. 十六进制:0-9及A-F,满16进1. 以0x或0X开头表示.此处的A-F不区分大小写. 如:0x21AF +1= 0X21B0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 A B C D E F 1.原码.反码.补码   所有数字在计算机底层都以二进制形式存在.  计

C++ float的内存布局

IEEE754标准中,浮点数的内存布局 以下仅以float(内存中占据4个字节,32bits)来说明,double(8个字节,64bits)同理,只是有细微的差别. float的内存分布 IEEE754规定,32bit的float在内存中是这样分布的: 符号位(S) 阶码(E) 尾数(M) 1 8 23 整数.浮点数在内存中都是以二进制的形式存在的(补码),而浮点数是二进制下的科学计数法存储在内存中的.可以表示 为:$ s 1.m^e$ 符号位占据一个比特,当S = 0时表示正数,当S = 1时

Java 基本语法----进制、运算符

进 制 对于整数,有四种表示方式: 二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头.十进制:0-9 ,满 10 进 1. 八进制:0-7 ,满 8 进1. 以数字 0 开头表示.十六进制:0-9 及 A-F,满 16 进1. 以 0x 或 0X开头表示.此处的A-F不区分大小写. 所有数字在计算机底层都以二进制形式存在. 计算机以补码的形式保存所有的整数. 正数的补码与其原码相同:负数的补码是在其反码的末位加1. 原码:直接将一个数值换成二进制数. 反码:是对原码按位取反,只是最高位

Java基础Day2

Java基础第二天 2.1回顾 第一个代码: /** 这是我的第一个java程序 @author zhang @version v1.0 */ publicclass HelloJava{ /* 1.源文件以.java结尾 2.源文件中可以有多个class声明的类 3.类中可以有主方法(即main()方法),其格式是固定的:public static void main(String[]args){} 4.main()方法是程序的入口,方法内是程序的执行部分. 5.一个源文件中只能有一个声明为p

Node.js面试题:侧重后端应用与对Node核心的理解

Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. node开发技能图解 node 事件循环机制 起源 node正风生火起,很多介绍却停留在入门阶段,无法投入生产 node相关的高质量面试题更是少之又少,很难全面考查应聘者的node能力 许多文章在讲第三方类库,可是这些库质量差距较大,一旦遇到问题怎么办 必需的,全面了解node核心才能成为一名合格的node开发人员 目标与原则 前后端兼顾,更侧重

node.js面试题大全-侧重后端应用与对Node核心的理解

Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. github地址: https://github.com/jimuyouyou/node-interview-questions 注: 这人本人历时一星期完成的小作品,github里面对一些关键代码还有js源文件.直接node filename.js就可查看效果. 第一个版本,写的匆忙,能力有限,欢迎拍砖补充!后面持续更新会及时发布到github

C语言高级程序设计——进制算法以及位算符号

语言不够官方:意会: 数据储存运算是以二进制的,二进制数有原码 反码 补码三种.通常所说的二进制就是原码.(语言不官方) 原码 :4的原码可以为:0000 0100:最高位0 可以为符号数 反码:正数和原码相同,负数的符号位不变,其余位0变1,1变0 补码:正数和原码相同,负数的补码在反码的基础上加1(二进制存储是以补码来存的) 二进制八进制互转 二转八:三位转一位:八转二:一位转三位: 二进制十进制互转 二转十:按照8 4 2 1乘以各个位置数字:十转二:整数部分累除2取余数法,小数部分乘2取