-
2021-07-30 02:46:56
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制数据也是采用位置计数法,其位权是以2为底的幂。
二进制转换十进制公式:
abcd.efg(2)=d*2^0+c*2^1+b*2^2+a*2^3+e*2^-1+f*2^-2+g*2^-3(10)
例如二进制数据110.11,其权的大小顺序为2^2、2^1、2^0、2^-1、2^-2。对于有n位整数,m位小数的二进制数据用加权系数展开式表示,可写为:
(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)+……+a(-m)×2^(-m)
二进制数据一般可写为:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2。
注意:
1、式中aj表示第j位的系数,它为0和1中的某一个数。
2、a(n-1)中的(n-1)为下标,输入法无法打出所以用括号括住,避免混淆。
3、2^2表示2的平方,以此类推。
二进制转为十进制计算方法举例
二进制转为十进制的时候,先把二进制从高位(最左边的“1”)开始按从上到下的顺序写出 ,第一位就是最后的商 “2÷2 = 1 余0 “,余数肯定是加零。其他位数如果有”1“(原来的余数),就先乘以”2“再加”1“。
下面就是从第一位开始乘以2加余数的方法算回去
例如 100101110
1…………0x2+1=1…………余数为1
0…………1x2+0=2………… 余数为0
0 …………2x2+0=4 ………… 余数为0
1 …………4x2+1=9……………… 余数为1
0…………9x2+0=18 ……………… 余数为0
1 …………18x2+1=37 …………余数为1
1…………… 37x2+1=75…………余数为1
1………………75x2+1=151………… 余数为1
0………………151x2+0=302 ………… 余0
所以得到十进制数302
另:1*2^8+0*2^7+0*2^6+1*2^5+0*2^4+1*2^3+1*2^2+1*2^1+0*2^0=302
更多相关内容 -
十进制转二进制模拟_十进制转二进制模拟_
2021-10-03 12:43:31模拟十进制数到二进制数的转换过程,以LED来模拟各个二进制位,并能以动画方式模拟计数的过程。 选择手动方式时,将8个LED变成滑动条中数字的二进制(基数2)表示。例如,如果滑动条设置为数字10(在二进制中表示为... -
python十进制转二进制的详解
2020-12-20 15:45:13python十进制转二进制 python中十进制转二进制使用 bin() 函数。 bin() 返回一个整数 int 或者长整数 long int 的二进制表示。 下面是使用示例: >>>bin(10) '0b1010' >>> bin(20) '0b10100' 补充:十进制转8进制和... -
八位二进制转三位十进制电路multisim源文件
2020-11-27 22:19:50八位二进制转三位十进制电路multisim源文件,十进制数字用数码管显示,multisim13及以上版本的软件可以正常打开仿真。 -
C# 进制转换的实现(二进制、十六进制、十进制互转)
2020-12-23 03:47:24//十进制转二进制字符串 Console.WriteLine(Convert.ToString(d,2)); //输出: 1010 //十进制转十六进制字符串 Console.WriteLine(Convert.ToString(d,16)); //输出: a //二进制字符串转十进制数 string bin = "1010... -
python十进制和二进制的转换方法(含浮点数)
2020-09-20 07:25:31主要介绍了python十进制和二进制的转换方法(含浮点数),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 -
二进制转十进制:将字符串中任何格式的二进制数据转换为浮点数-matlab开发
2021-06-01 19:27:05将字符串中任何格式的二进制数据转换为定义的小数大小的浮点十进制数。 “intsize”输入参数定义指数的大小并设置二进制数中的定点位置。 附有matlab程序用于测试此功能 -
浮点数转换:在十进制和 IEEE 754 二进制表示之间转换浮点数-matlab开发
2021-06-01 11:27:38该包旨在根据 IEEE 754 标准将浮点数从十进制转换为二进制格式。 当在 MATLAB 精度限制下执行计算或当对二进制字符串感兴趣时,这很有用,例如在遗传算法中。 该包由以下四个脚本组成。 float2bin:将十进制浮点数... -
C语言中十六进制转十进制两种实现方法
2021-01-20 06:47:40C语言 · 十六进制转十进制 问题描述 从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。 样例输入 FFFF... -
二进制如何转十进制?二进制转换十进制公式
2021-06-29 08:21:01二进制如何转十进制?二进制转换十进制公式二进制转换为十进制的简便方法。原来方法:从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如: 01101011转十进制:第0位:1乘...二进制如何转十进制?二进制转换十进制公式
二进制转换为十进制的简便方法。
原来方法:
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如: 01101011转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0 +8+0+32+64+0=107.
二进制01101011=十进制107.
另类解法:
看到另类两个字,可能有人会有疑惑,大家可千万别认为这是种取巧,从而怀疑这种技巧的科学性。技巧,也是根据理论知识科学地得出的。
在讲解这种“另类”方法之前,同学们先来看这样一个已知知识:数学中的进制即十进制数中,在一个数的整数部分的最右侧加0,每加一个0,这个数是前一个数的10倍,如25、250、2500...等等;在小数部分的最左侧每加一个0,这个数是前一个数的十分之一,如0.25、0.025、0.0025...等等
设想:二进制数中,在1的右侧(整数部分)或左侧(小数部分)每增加一个0,会是前一个数的2倍或二分之一吗?
想想看:为什么只针对数码1来进行?
推理过程:分别把整数部分和小数部分转换成十进制来进行比较,按“乘权求和”的规则进行转换
整数部分:(1)2=(1)10;(10)2=(2)10;(100)2=(4)10;(1000)2=(8)10;(10000)2=(16)10..
小数部分:(0.1)2=(0.5)10;(0.01)2=(0.25)10;(0.001)2=(0.125)10;(0.0001)2=(0.0625)10;0.00001)2=(0.03125)...
这些转换过程,令你忆起了数制概念中关于位和值的定义吗?同样的数在不同的位置所代表的值是不同的,称为位值(或权值)。现在明白它的含义了吗?这条,是下面转换的最直接的依据。
排列:1、2、4、8、16...... 0.5、0.25、0.125、0.0625、0.03125......
结论:整数部分2倍;小数部分:二分之一即0.5倍
以上就是这种“另类”解法的理论依据,它另类吗?好,我们现在就来看看这种另类的方法到底是怎样实现数制之间转换的。同样以二进制数转换为十进制数中的例子来看
(1101.011)2=( )10
第一步:画出一串表示位的标记,如“×”,标记的多少根据题目中出现数字数目的多少而定,比方这个例子,整数部分有4位,小数部分三位,共7位.千万记得给小数点留个位置哦!
第二步:在相应的位上写上它所对应的值,值的大小整数部分从右到左依次为1、2、4、8、16...即后一个数是前一个数的2倍;小数部分从左到右依次为0.5、0.25、0.125、0.625...即后一个数是前一个数的0.5倍。
第三步:将二进制数按位写在标记的下文
第四步:将位值为“1”的标记上方的数字相加,即为二进制数所对应的十进制数
8 + 4 + 1 + 0.25 + 0.125 =13.375
即:(1101.011)2 = (13.375)10
在实际的换算过程中,同学们只要直接写出第三步,然后用第四步来得出相应结果就可以了。
-
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2020-12-20 02:09:571.1.二进制转十进制: 函数:bindec(string $binary_string) @param $binary_string 参数表示所要转换的二进制字符串。 @return 返回与$binary_string参数所表示的二进制数的十进制数等价值。 函数说明: bindec()... -
使用JavaScript进行进制转换将字符串转换为十进制
2020-12-12 07:33:12将任意进制字符串转换为十进制,如二进制,八进制,十六进制, 第二数数不写即为最常用的转换为整型十进制; 代码如下: parseInt(“11”, 2); // 3 2进制转10进制 parseInt(“77”, 8); // 63 8进制转10进制 ... -
C#进制转换(二进制转十进制 十进制转16进制等)
2020-04-03 14:57:28//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(69, 8)); //十进制转十六进制 Console.WriteLine(Convert.ToString(69, 16)); //二进制...//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(69, 8)); //十进制转十六进制 Console.WriteLine(Convert.ToString(69, 16)); //二进制转十进制 Console.WriteLine(Convert.ToInt32(”100111101″, 2)); //八进制转十进制 Console.WriteLine(Convert.ToInt32(”76″, 8)); //C# 16进制转换10进制 Console.WriteLine(Convert.ToInt32(”FF”, 16));
在C#中可以对整型运算对象按位进行逻辑运算。按位进行逻辑运算的意义是:依次取被运算对象的每个位,进行逻辑运算,每个位的逻辑运算结果是结果值的每个位。
C#支持的位逻辑运算符如表2所示。
运算符号 意义 运算对象类型 运算结果类型 对象数 实例
~ 位逻辑非运算 整型,字符型 整型 1 ~a
& 位逻辑与运算 2 a & b
| 位逻辑或运算 2 a | b
^ 位逻辑异或运算 2 a ^ b
<< 位左移运算 2 a<<4
>> 位右移运算 2 a>>2
1、位逻辑非运算
位逻辑非运算是单目的,只有一个运算对象。位逻辑非运算按位对运算对象的值进行非运算,即:如果某一位等于0,就将其转变为1;如果某一位等于1,就将其转变为0。比如,对二进制的10010001进行位逻辑非运算,结果等于01101110,用十进制表示就是:~145等于110;对二进制的01010101进行位逻辑非运算,结果等于10101010。用十进制表示就是~85等于176。
2、位逻辑与运算
位逻辑与运算将两个运算对象按位进行与运算。与运算的规则:1与1等于1,1与0等于0。
比如:10010001(二进制)&11110000等于10010000(二进制)。
3、位逻辑或运算
位逻辑或运算将两个运算对象按位进行或运算。或运算的规则是:1或1等1,1或0等于1,
0或0等于0。比如10010001(二进制)| 11110000(二进制)等于11110001(二进制)。
4、位逻辑异或运算
位逻辑异或运算将两个运算对象按位进行异或运算。异或运算的规则是:1异或1等于0,
1异或0等于1,0异或0等于0。即:相同得0,相异得1。
比如:10010001(二进制)^11110000(二进制)等于01100001(二进制)。
5、位左移运算
位左移运算将整个数按位左移若干位,左移后空出的部分0。比如:8位的byte型变量
byte a=0x65(即二进制的01100101),将其左移3位:a<<3的结果是0x27(即二进制的00101000)。
6、位右移运算
位右移运算将整个数按位右移若干位,右移后空出的部分填0。比如:8位的byte型变量
Byte a=0x65(既(二进制的01100101))将其右移3位:a>>3的结果是0x0c(二进制00001100)。
在进行位与、或、异或运算时,如果两个运算对象的类型一致,则运算结果的类型就是运算对象的类型。比如对两个int变量a和b做与运算,运算结果的类型还是int型。如果两个运算对象的类型不一致,则C#要对不一致的类型进行类型转换,变成一致的类型,然后进行运算。C# 16进制转换10进制类型转换的规则同算术运算中整型量的转换则一致。
由位运算符连接整型量而成的表达式就是位运算表达式。 -
二进制转换十进制 算法解析
2021-03-06 16:26:56java里面是有进制间互换现成的方法的:public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制int decimal = 10;System.out.println("十进制数:"+...java里面是有进制间互换现成的方法的:
public class十进制与各进制的相互转换 {public static voidmain(String[] args){//java已经实现的机制:十进制转换为二进制
int decimal = 10;
System.out.println("十进制数:"+decimal+",转换为二进制:"+Integer.toBinaryString(decimal));
System.out.println("十进制数:"+decimal+",转换为八进制:"+Integer.toOctalString(decimal));
System.out.println("十进制数:"+decimal+",转换为十六进制:"+Integer.toHexString(decimal));
System.out.println("二进制数:"+"1010" +",转换为十进制:"+Integer.valueOf("1010", 2));
System.out.println("八进制数:"+"12" +",转换为十进制:"+Integer.valueOf("12", 8));
System.out.println("十六进制数:"+"a" +",转换为十进制:"+Integer.valueOf("a", 16));
}
}
结果:
十进制数:10,转换为二进制:1010十进制数:10,转换为八进制:12十进制数:10,转换为十六进制:a
二进制数:1010,转换为十进制:10八进制数:12,转换为十进制:10十六进制数:a,转换为十进制:10
但如果不取Integer的内含方法,我们要怎么实现进制之间的转换呢?
下面针对二进制-->十进制实现其算法过程:
一般思维:
当问到二进制数转为十进制数,大多数人脑里第一反应的应该是这样一个逻辑过程:
二进制数:1010
十进制数:1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 8 + 0 + 2 +0 = 10
按这个思路,java代码可以这样实现:
方法一:
public intbinaryToDecimal(String inMsg){int x = 0;int mul = 1;for(int i = inMsg.length()-1;i>0;i--){
x+= mul*(inMsg.charAt(i)=='1'?1:0);
mul*=2;
}
System.out.println(mul);returnmul;
}
好奇在网上也找了下其他实现方法:
方法二:
String radix = "1010";
public intmethod(String radix){int x = 0;for(charc:radix.toCharArray())
x= x*2 + (c=='1'?1:0);
System.out.println(x);returnx;
}
对比以上两个方法,方法一和我们平常的思维是一致的,但是方法二就不大好理解了,略作思考后,发现可以这样理解:
1、从for(char c:radix.toCharArray())这行代码可以看出,需要将待求解的二进制数转换为char数组;显然,当待求解二进制数为1010时,char数组即为:char[1,0,1,0],数组中有4个元素,那么也就是说for循环要循环运行4次。
2、显而易见,for循环里面的算式组成部分的(c=='1'?1:0)目的就是为了拿到当前循环时对应二进制数组下标的值。
如:第一次循环,拿到二进制数组下标为0的值:1
第二次循环,拿到二进制数组下标为1的值:0
第三次循环,拿到二进制数组下标为2的值:1
第四次循环,拿到二进制数组下标为3的值:0
3、算法:x = x*2 + (c=='1'?1:0) 的原理解析:前半部分x*2,是为了实现二进制数组元素的幂次相乘(之前的int x = 0其实实现了char[]数组的size()-1的作用),后半部分获取了下次进行幂运算的char数组的元素值。
解析:
第一次循环:看方法二的第三行代码:int x = 0;x初始值为0,就导致了for循环第一次循环时,运算为:0*2+1 ,即只会得到算式(c=='1'?1:0)的值,即二进制数组第一个元素的值:1 ;这时循环已经进行了1次,还剩3次,所以这里的1会在后面的3次循环里分别乘以2 , 即1*2*2*2;
第二次循环:算式为: (0*2 + 1)*2 + 0 == 0*2*2 + 1*2 + 0 ,第一部分0*2*2不用管,因为这个是int x=0起作用用的, 第二部分是第一次循环时得到1的第一次幂运算1*2, 第三部分就是二进制数组下标为1的元素:0,也是下一次循环会进行幂运算的数。 这时我们发现总共的4次循环已经进行了2次,剩下2次,所以这里的下次幂运算值:0会在后面的2次循环里分别乘以2,即0*2*2;
第三次循环:算式为: ((0*2 + 1)*2 + 0)*2 +1 == 0*2*2*2 + 1*2*2 + 0*2 +1 ,第一部分0*2*2*2不用管,第二部分是第一次循环时得到1的第二次幂运算1*2*2, 第三部分是第二次循环时得到0的第一次幂运算0*2,第四部分就是二进制数组下标为2的元素:1,也是下一次循环会进行幂运算的数。 这时我们发现总共的4次循环已经进行了3次,剩下1次,所以这里的下次幂运算值:1会在后面的1次循环里乘以2,即1*2;
第四次循环:算式为: (((0*2 + 1)*2 + 0)*2 +1 )*2 +1 == 0*2*2*2*2 + 1*2*2*2 + 0*2*2 +1*2 + 0 ,第一部分0*2*2*2*2不用管,第二部分是第一次循环时得到1的第三次幂运算1*2*2*2, 第三部分是第二次循环时得到0的第二次幂运算0*2*2,第四部分是第三次循环时得到1的第一次幂运算1*2,第五部分就是二进制数组下标为3的元素:0,也是下一次循环会进行幂运算的数。 这时我们发现总共的4次循环已经进行了4次,剩下0次,
所以本次运算就是整个算法的结果: 0*2*2*2*2 + 1*2*2*2 + 0*2*2 + 1*2 + 0 = 0 + 8 + 0 + 2 + 0 = 10 ,这样看是不是觉得很熟悉!没错,其实原理还是和方法一一样样的。
啰嗦了点,希望能帮到你理解!:)
-
python进制转换:十进制转二进制的用法
2020-11-26 02:59:08其实这是非常简单的,这个就像小学学习数学乘法口诀意义,只要记住转换口诀即可轻松应用,一起来看下具体的操作内容吧~一、python进制转换dec(十进制)—> bin(二进制)dec(十进制)—> oct(八进制)dec(十进制... -
Python十进制转二进制,二进制转十进制。浮点数float精度问题
2021-11-19 14:56:44以及Python十进制二进制相互之间的转换 def zbinary(num): #判断是否为整数 if num == int(num): integer = '{:b}'.format(int(num)) #将十进制整数转换为二进制数 return num else: integer_part = int... -
二进制如何转换为十进制?
2021-06-19 05:54:00二进制到十进制数字转换使用加权列来标识数字的顺序以确定数字的最终值将二进制转换为十进制(base-2到base-10) )数字和背面是一个重要的概念,因为二进制编号系统构成了所有计算机和数字系统的基础。十进制或... -
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2020-12-17 22:56:16一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo decbin(26); //输出 11010 decbin (PHP 3, PHP 4, PHP 5) decbin — 十进制转换为二进制 ... -
c语言 二进制 十进制 快速转换
2012-07-05 10:46:50二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,如:8位二进制数:“00110101” ;c语言中表示为 0b00110101; 十进制数是我们日常使用的计数方式,如245,... -
怎么用python二进制转换十进制
2020-11-26 03:00:07绒绒小梧桐2020-02-24 10:13:41二进制转十进制,十进制转二进制的算法十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写 就是结果例如302302/2 = 151 余0151/2 = 75 余175/2 = 37 余137/2 = 18 余... -
二进制转十进制(c语言)
2021-11-17 22:38:40把一个二进制数转化为十进制数。 输入格式 第一行一个正整数 n (1≤n≤30) 表示二进制数的长度。 第二行一个二进制数。 输出格式 输出一个整数,表示对应的十进制数。 例:输入 5 10101 输出: 21 整体思路... -
python基础教程之python基础教程之python进制转换(二进制、十进制
2020-11-21 03:03:15https://www.xin3721.com/eschool/pythonxin3721/使用内置函数实现进制转换实现比较简单...二进制转十进制使用函数:int()实例:123#结果是4int('100',2)注意:上述一定不要忘记加引号,因为二进制是一个字符串如果... -
十进制转 Q15 格式:将十进制值转换为 Q15 格式的功能。-matlab开发
2021-06-01 18:38:11函数的输入参数: x - 十进制整数形式 - 形式 - 依赖于输入参数的表示(十六进制或二进制)取'hex'或'bin' 功能价值: y - 存储在 MATLAB 字符串中的十六进制或二进制表示 例子: >> dec2q15(0.125,'十六进制') ... -
c语言中二进制转十进制详解
2021-12-18 15:27:18数字字符‘1’的ASCII代码是十进制数49,二进制形式是0110001。其中我们需要知道的是‘1’和1是不同的概念。字符‘1’只是表示一个形状为‘1’的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占一个字节... -
matlab实现十进制到二进制定点有符号补码小数的转换
2015-05-10 20:18:00matlab实现十进制到二进制定点有符号补码小数的转换,其中定点小数的整数部分位长和小数部分位长可以自己指定,输出的最高位表示符号位(0为整数,1为负数),补码表示 -
二进制转十进制和八进制
2019-11-26 20:26:51对于如何进行二进制转十进制,我们可以先看一下十进制是啥:就比如数字111,它 其实等于1*102 -
计算机基础进制转换(二进制、八进制、十进制、十六进制)
2018-09-07 22:27:17十进制转二进制 十进制整数转二进制 十进制整数转换成二进制采用“除2倒取余”,十进制小数转换成二进制小数采用“乘2取整”。 例题: 135D = __ B 解析:如下图所示,将135除以2,得余数,直到不能整除,然后再...