精华内容
下载资源
问答
  • 十进制小数转二进制算法

    千次阅读 2019-09-16 20:15:57
    整数和小数分别转换。 整数除以2,商继续除以2,得到0为止,将余数逆序排列。 22 / 2 11 余0 11/2 5 余 1 5 /2 2 余 1 2 /2 1 余 0 1 /2 0 余 1 所以22的二进制是10110 小数乘以2,取整,小数部...

    整数和小数分别转换。
    整数除以2,商继续除以2,得到0为止,将余数逆序排列。
    22 / 2  11 余0
    11/2     5  余 1
    5 /2      2  余 1
    2 /2      1  余 0
    1 /2      0  余 1
    所以22的二进制是10110
    小数乘以2,取整,小数部分继续乘以2,取整,得到小数部分0为止,将整数顺序排列。
    0.8125x2=1.625 取整1,小数部分是0.625
    0.625x2=1.25 取整1,小数部分是0.25
    0.25x2=0.5 取整0,小数部分是0.5
    0.5x2=1.0 取整1,小数部分是0,结束
    所以0.8125的二进制是0.1101
    十进制22.8125等于二进制10110.11011

    005804_Cvw3_2611009.png

     

     

    转载于:https://my.oschina.net/u/2611009/blog/814110

    展开全文
  • 二进制、八进制、十六进制转换为十进制二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是N进制,那么:对于整数部分,从右往左看,第 i 位的位权等于...

    上节我们对二进制、八进制和十六进制进行了说明,本节重点讲解不同进制之间的转换,这在编程中经常会用到,尤其是C语言。

    将二进制、八进制、十六进制转换为十进制

    二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。假设当前数字是 N 进制,那么:

    • 对于整数部分,从右往左看,第 i 位的位权等于Ni-1

    • 对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j

    更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是 1,那么它所表示的数值大小就是该位的位权。

    1) 整数部分

    例如,将八进制数字 53627 转换成十进制:

    53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

    从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… 第n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    注意,这里我们需要以十进制形式来表示位权。

    再如,将十六进制数字 9FA8C 转换成十进制:

    9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

    从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。将二进制数字转换成十进制也是类似的道理:

    11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

    从右往左看,第1位的位权为 20=1,第2位的位权为 21=2,第3位的位权为 22=4,第4位的位权为 23=8,第5位的位权为 24=16 …… 第n位的位权就为 2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

    2) 小数部分

    例如,将八进制数字 423.5176 转换成十进制:

    423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… 第m位的位权就为 8-m。再如,将二进制数字 1010.1101 转换成十进制:

    1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

    小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… 第m位的位权就为 2-m。更多转换成十进制的例子:

    • 二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

    • 二进制:101.1001 = 1×22 + 0×21 + 1×2+ 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

    • 八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

    • 八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

    • 十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

    将十进制转换为二进制、八进制、十六进制

    将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

    1) 整数部分

    十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:

    • 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;

    • 保留余数,用商继续除以 N,又得到一个新的商和余数;

    • 仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;

    • ……

    • 如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。

    把先得到的余数作为 N 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,依次排列起来,就得到了 N 进制数字。下图演示了将十进制数字 36926 转换成八进制的过程:

    4e988610-4213-eb11-8da9-e4434bdf6706.png

    从图中得知,十进制数字 36926 转换成八进制的结果为 110076。下图演示了将十进制数字 42 转换成二进制的过程:

    50988610-4213-eb11-8da9-e4434bdf6706.png

    从图中得知,十进制数字 42 转换成二进制的结果为 101010。

    2) 小数部分

    十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是:

    • 用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

    • 将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;

    • 再将积的整数部分取出,继续用 N 乘以余下的小数部分;

    • ……

    • 如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。

    把取出的整数部分按顺序排列起来,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,这样就得到了 N 进制小数。下图演示了将十进制小数 0.930908203125 转换成八进制小数的过程:

    51988610-4213-eb11-8da9-e4434bdf6706.png

    从图中得知,十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345。下图演示了将十进制小数 0.6875 转换成二进制小数的过程:

    52988610-4213-eb11-8da9-e4434bdf6706.png

    从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011。如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

    • 十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345;

    • 十进制数字 42.6875 转换成二进制的结果为 101010.1011。

    下表列出了前 17 个十进制整数与二进制、八进制、十六进制的对应关系:

    十进制012345678910111213141516
    二进制0110111001011101111000100110101011110011011110111110000
    八进制01234567101112131415161720
    十六进制0123456789ABCDEF10

    注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

    • 十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...,是一个循环小数;

    • 十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...,是一个循环小数;

    • 十进制 0.625 对应的二进制为 0.101,是一个有限小数。

    二进制和八进制、十六进制的转换

    其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

    1) 二进制整数和八进制整数之间的转换

    二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

    54988610-4213-eb11-8da9-e4434bdf6706.png

    从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674。八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

    56988610-4213-eb11-8da9-e4434bdf6706.png

    从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011。

    2) 二进制整数和十六进制整数之间的转换

    二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

    57988610-4213-eb11-8da9-e4434bdf6706.png

    从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C。十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

    58988610-4213-eb11-8da9-e4434bdf6706.png

    从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110。在C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

    总结

    本节前面两部分讲到的转换方法是通用的,任何进制之间的转换都可以采用,只是有时比较麻烦而已。二进制和八进制、十六进制之间的转换有非常简洁的方法,所以没有采用前面的方法。

    展开全文
  • 十进制小数转二进制matlab代码SAR ADC的数字校准 逐次逼近寄存器(SAR)ADC数字校准 概述 代码 该代码部分包含: 可执行文件(),用于自动测试ADC模型并输出其动态性能以及平均能耗。 Liu等人提出的一种流行的SAR ...
  • 十进制小数转为二进制,主要是小数部分乘以2,取整数部分一次从左往右放在小数点后,直至小数点后为0(就是为整数时) eg:0.125 二进制小数转换为十进制主要是乘以2的负次方,从小数点后开始,依次乘以2...

    方法:

    十进制的小数转为二进制,主要是小数部分乘以2,取整数部分一次从左往右放在小数点后,直至小数点后为0(就是为整数时)

    eg:0.125   

    二进制的小数转换为十进制主要是乘以2的负次方,从小数点后开始,依次乘以2的负一次方,2的负二次方,2的负三次方等。

    eg: 二进制数0.001转换为十进制。

     

    转载百度

     

    展开全文
  • 十进制小数或带小数的十进制转二进制十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的...

    十进制小数或带小数的十进制转二进制:

          十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数 部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

          然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

    如:0.625=(0.101)B
      0.625*2=1.25
    取出整数部分1
      0.25*2=0.5
    取出整数部分0
      0.5*2=1
    取出整数部分1
      
    再如:0.7=(0.1 0110 0110…)B
      0.7*2=1.4
    取出整数部分1
      0.4*2=0.8
    取出整数部分0
      0.8*2=1.6
    取出整数部分1
      0.6*2=1.2
    取出整数部分1
      0.2*2=0.4
    取出整数部分0 
      0.4*2=0.8
    取出整数部分0
      0.8*2=1.6
    取出整数部分1
      0.6*2=1.2
    取出整数部分1
      0.2*2=0.4
    取出整数部分0

      
    2、十进制整数转换为二进制整数

          十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

    例、把 173D转换为二进制数。
    解:
    在这里插入图片描述

    以下为十进制小数或带小数的十进制转二进制代码。

    #include<stdio.h>
    
    #define N 10
    #define M 100 
    
    void fun10_2_Z(long number)//十进制整数部分转二进制 
    {
    	char ch[M];
    	int len=0;
    	if(number==0) 
    	{
    		printf("%d",number);//如果整数部分为零直接输出
    	} 
    	else
    	{
    		while(number)
    		{
    			ch[len++]=number%2;
    			number=number/2;
    		}
    		for( ;len>0;len--)//逆向输出 
    		{
    			printf("%d",ch[len-1]);
    		}
    	}	
    }
    void fun10_2_X(double number)        //十进制小数部分转二进制 
    {
    	int i,len=0;
    	int arry[N];
    	
    	while(number)
    	{
    		int temp = (int)(number*2);
    		arry[len++]=temp;
    		if(len==N) 
    			break;            //控制小数点后不超过十位 
    		number = 2*number-temp;
    	}
    	
    	printf(".");
    	for(i=0;i<len;i++)
    	{
    		printf("%d",arry[i]);
    	}
    }
    
    int main()
    {
    	double number;
    	scanf("%lf",&number);
    	long t=(int)number;//整数部分 
    	double m=number-t;//小数部分 
    	fun10_2_Z(t);
    	fun10_2_X(m);
    	return 0;
    }
    

    运行效果截图:

    十进制小数转二进制,运行截图:
    十进制
    在这里插入图片描述
    带小数的十进制转二进制运行截图:
    在这里插入图片描述

    展开全文
  • 以前自己学习进制的转换这一部分的时候总是不理解十进制小数转二进制时候用到的乘基取整法的原理,在网上也没有找到自己满意的解答。最近再次学习时突然有了新的理解,以下是个人对十进制小数转二进制小数原理的一些...
  • 主要介绍了C语言用栈实现十进制转换为二进制的方法,结合实例形式分析了C语言栈的定义及进制转换使用技巧,需要的朋友可以参考下
  • 整数由十进制转二进制挺好转的,小数怎么呢?记录一下 回顾整数转换 短除2直至除尽,倒取余数 记录小数转换 小数部分乘2直至小数部分为0,顺取整数 0.125 转换后 0.001 0.6 * 2 = 1.2 —————— 1 0.2 * ...
  • 遗传算法应用 一、问题概述 求 y=10sin(5x)+7*|x-5|+10 最大值。 二、问题解决 1.产生初始种群 用随机数生成器分别产生8、16、32个随机数(由于...matlab中十进制转二进制函数dec2bin()默认是6位,因此,我们先采用...
  • (1)二进制小数转化为十进制小数 比如把二进制小数110.11转化为十进制小数,步骤如下: (2)十进制小数转化为二进制小数方法:1,先分别把十进制小数的整数部分和小数部分转化为二进制2,然后合并当然整数部分很简单,...
  • java十进制小数转二进制

    千次阅读 2018-03-15 22:01:42
    1. 十进制整数思路: 整数除以2,每次将余数保存起来,商循环除以2,直到商为0为止,然后将所有余数逆序打印出来。例子:23/2 商: 11 余数: 111/2 商: 5 余数: 15/2 商: 2 余数: 12/2 商: 1 余数: 01/2 商: 0 余数: ...
  • 乘2取整法介绍: 举例:0.35转换成二进制 0.35×2=0.7 ······ 取0(d1) 0.7×2=1.4 ······ 取1(d2) 0.4×2=0.8 ······ 取0(d3) 0.8×2=1.6 ······ 取1(d4) 0.6×2=1.2 ······ ...
  • 十进制小数转二进制matlab代码目录 这是什么 这个存储库是我尝试图像处理算法的地方。 我正在通过Coursera上一门图像处理课程。 他们建议使用matlab,但是由于我在大学数据结构课程中学习c ++,所以我认为使用c ++会...
  • C语言实现十进制小数转二进制

    千次阅读 2015-06-22 19:30:13
    十进制转二进制,整数部分采用除以二取余,小数部分采用乘以二取整。网上大多数转换都是针对整数的,这里写一个小数的做个纪念 #include #include int main() { double a=0.2784; int i=0; printf("0."); for...
  • LinkStack * IntConverDToB(int t, LinkStack *s)/*十进制二进制整数部分转换函数*/ { while(t != 0) { s = LStackPush(s,t % 2); t /= 2; } return s; } void DecConverDToB(float f,LinkQueue *
  • #include<stdio.h> int main() {float n; scanf("%f",&n); printf("0."); while(n>0.0) { n=n*2; if(n>=1.0) { printf("1"); n=n-1; } else printf("0"); ...
  • 十进制小数转二进制matlab代码表面重建工具箱 下载最新发布的二进制文件: 介绍 该工具主要是在我的硕士论文期间编写的。 它提供了几种算法,可对3d散射点进行三角测量,以用于3d扫描应用程序。 在旧硬盘上再次找到...
  • 十进制小数转二进制matlab代码CIE425--霍夫曼算法 该程序将文本文件作为输入,并使用霍夫曼无损算法对其进行编码。 该代码由Ahmed Wael在2018年秋季针对信息理论和编码课程完全开发。 如何使用 运行名为.huff的.m...
  • 小数二进制十进制之间的转换

    万次阅读 2019-08-26 14:33:18
    0.125(十进制) 依次 × 2 取小数点左边第一个数,将取得的数按顺序排列在小数点右侧,例子如下: 0.125 × 2 = 0.25 0.25 × 2 = 0.5 0.5 × 2 = 1.0 0.125(十进制)——> 0.001(二进制) 0.001(二进制) ...
  • 十进制小数转二进制matlab代码羽流跟踪 检测并参数化热视频中的火山羽流。 在Matlab中开发。 它能做什么 该程序将热图像列表(.mat格式)作为输入,并提供羽状遮罩的分割图像以及覆盖在原始图像上的轮廓。 它还提取...
  • 进制转换:二进制、八进制、十六进制、十进制之间的转换 不同进制之间的转换在编程中经常会用到,尤其是C语言。 将二进制、八进制、十六进制转换为十进制 二进制、八进制和十六进制向十进制转换都非常容易,就是...
  • 打印出二进制(第一个数为个位,第二个数为10位,即乘以10,第三位数为百位, 即乘以100。。以此类推,即循环乘以10),直到除数 为0为止。小数乘以2,取整然后打印2进制,直到小数部分为0为止,或者打印小数 后7...
  • **B、**然后,简单介绍定点小数十进制转二进制的规则: x表示实际的数,q表示它的Qn型定点小数。其中n为小数点之后的二进制位数, 例0 111 . 11111,则n=5。 则转换公式为: 例n=4,则 此时,可得出定点小数
  • 计算机内部对数据的存储是利用二进制的方式实现的,为了更深入的了解二进制并能够熟练的进行十进制二进制的转换的计算,尝试使用java语言实现该算法。   备注:以前写的,现在放上来。 计算思路: 整数部分...
  • 十进制小数转二进制matlab代码统计量进化算法 该项目是量子进化算法(QEA)的统计版本,它为“背包”问题找到了解决方案。 团队成员: 马吉德·贝希什蒂·莫塔瑟姆 贾姆希德·塞贝特·纳沃克 穆罕默德(Mohammad ...
  • 十进制小数转二进制小数方法</font color> 十进制小数→→→→→二进制小数 方法:“乘2取整” 对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数...
  • 十进制小数转二进制matlab代码二进制和十进制转换器 此代码受MATLAB代码启发,可用于生成二进制矩阵。 对于遗传算法和其他用途很有用。 MATLAB代码是2020年2月29日检索的Zacharias Voulgaris(2020)对二进制和十...
  • C++ 十进制小数转为N进制方法

    千次阅读 2020-03-23 16:57:21
    十进制小数转换为N进制小数的方法为 乘N取整法 所谓乘N取整法是将十进制的小数乘以N,得到的整数部分作为小数点后第一位。剩余的小数部分再乘以N,得到的整数部分作为小数点后第位。直到剩余小数部分为0,或达到...
  • 一、绪论 十六进制(Hexadecimal):在数学中是一种逢16进1的进位制。一般用数字0到9和字母A到F(或...著名的英国科学史学家李约瑟教授曾对中国商代记数法予以很高的评价,"如果没有这种十进制,就几乎不可能出现我...
  • 十进制小数转二进制matlab代码配对地球pat骨 该存储库是MATLAB代码的集合,用于在采样的地理空间坐标附近的飞机之间生成不相关的相遇。 它基于讨论的高级概念。 生成的相遇已在MIT LL CSIM,MIT LL CASSATT和JHU APL...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,042
精华内容 5,616
关键字:

十进制小数转二进制算法