Matlab二进制与十进制相互转化和按位异或的程序[推荐五篇]

第一篇:Matlab二进制与十进制相互转化和按位异或的程序

       Matlab中二进制转化为十进制的函数bin2dec('a');a是一个数。Matlab中十进制转化为二进制的函数dec2bin('a');a是一个数。按位异或的函数bitxor,只能进行十进制的按位异或。例:求1314520和19880516的异或值? 程序:b=dec2bin(bitxor(1314520,19880516));>> b b =

       ***0010011100

       >> a=bin2dec('***0010011100');>> a a =

       20665500

第二篇:二进制与十进制转化

       二进制与十进制转化:

       二进制11与十进制2相加得多少?

       解析:此题考查的是二进制与十进制的相互转化,属于高中信息技术的难点。对于二进制与十进制的混合运算必须都换成二进制或都换成十进制才能进行。二进制与十进制的相互转换可用8421法。“8421”法的原理说白了就是一种凑数法,按2的n次方的值列出,根据不同的情况进行“凑数”。我们把2的n次方列出分别是:

       20=1 21=2 22=4 23=8 24=16 25=

       3226=64„„

       一、对于二进制转换成十进制数

       例如:二进制数1010转换成十进制数

        4 2 1

       二进制数: 1 0 1 0(结果为凡是1对应的数相加:8 2=10)

       例1:110转换成十进制数

        4 2 1

        1 0(结果为凡是1对应的数相加:4 2=6)

       例2:11100转换成十进制数

        8 4 2 1

        1 1 0 0(结果为凡是1对应的数相加:16 8 4=28)

       二、对于十进制转换成二进制数

       例如:十进制数不胜数10转换成二进制数

        4 2 1

       (因为10=8 2)0 1 0(故凡是凑到的8和2下面都是1,没有凑到的为0)

       例3:十进制数6转换成二进制数

        4 2 1

       (因为6=4 2)

       0 1 1 0(故凡是凑到的4和2下面都是1,没有凑到的为0)

       例4:十进制数28转换成二进制数

       8 4 2 1

       (因为16 4 8=28)

        1 1 0 0(凑到的为1,没有凑到的为0)

       因四个选项都是二进制数,所以得将题干中的十进制数2转换成二进制数。根据8421法,十进制数2转换成二进制数是(10)2.。

       然后(11)2 (10)2=(101)2(注意二进制进位原则“逢二进一”)。

       方法二:将二进制数(11)2转化为10进制为(2 1)=3,3与10进制数2相加得5,十进制5转化为二进制5=(4 1)10=(101)2

第三篇:二进制与十进制

       二进制与十进制

       1、十进制与二进制类比

       abcd(10)=a*10^3 b*b*10^2 c*10^1 d*10^0;abcd(2)=a*2^3 b*b*2^2 c*2^1 d*2^0;

       十进制与二进制的区别:

       二进制逢二进一,十进制逢十进一

       二进制只能出现0,1两个数字,十进制能出现0~9十个数字 二进制各位的权重是2的幂,十进制是10的幂。

       2、如何将一个整数分离其各位出来?例如如何将3541分为1,4,5,3? 我们知道1=3541,4=354; 5=35; 3=3; 而3541/10=354; 354/10=35; 35/10=3; 3/10=0; 所以对于一个整数来说,要分离各位方法就很简单了。

       例如:输入一个n,按从低位到高位输出各位数字(例如:354->4,5,3)实现: cin>>n;while(n){ cout<

       3、如何将一串单独的数字组成一个大数字(从低位到高位),例如1,2,3如何转化成321? 我们知道321=3*100 2*10 1*1;其中3,2,1是通过输入实现的,而权值是有1变为10,然后10变为100,所以代码可以这样敲: int s,k,n;s=0;k=1;cin>>n;for(int i=0;i>a;s=s a*k;k=k*10;}

       4、如何将一串单独的数字组成一个大数字(从高位到低位),例如1,2,3如何转化成123? 因为abcd=a*10^3 b*10^2 c*10^1 d*10^0 =(a*10^2 b*10^1 c)*10 d =(((0*10 a*10 b)*10 c)*10) d 如果我们将结果保存在s中,那么我们可以得到一个关系式: int s=0;s=s*10 a;

       s=s*10 b;s=s*10 c;s=s*10 d;由此得到代码:

       int a,n;Int s=0;cin>>n;for(int i=0;i>a;s=s*10 a;}

       如何将一个二进制数转化成十进制?

       方法:abcd(2)=a*2^3 b*b*2^2 c*2^1 d*2^0;如何将一个十进制数转化成二进制数? 答案是短除法

       即除2取余,直到取整后的整数部分为0,然后从后到前取数字,使用合并整数的方法组成一个大整数即可。

第四篇:整数时十进制与二进制相互转换

       整数时十进制与二进制相互转换:

       二进制的1101转化成十进制

       1101(2)=1*2^0 0*2^1 1*2^2 1*2^3=1 0 4 8=13

       转化成十进制要从右到左用二进制的每个数去乘以2的相应次方,不过次方要从0开始。相反,用十进制的13除以2,每除一下将余数就记在旁边,最后按余数从下向上排列就可得到1101。由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为“按权相加”法。

       2的0次方是1 2的1次方是2 2的2次方是4 2的3次方是8 2的4次方是16 2的5次方是32 2的6次方是64 2的7次方是128 2的8次方是256 2的9次方是512 2的10次方是1024 2的11次方是2048 2的12次方是4096 2的13次方是8192 2的14次方是16384 2的15次方是32768

       有小数点的十进制与二进制之间的转换:

       十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。例如19.95 转2进制分为两个步骤:

       (1)小数点前:

       19/2=9余1 9/2=4 余1 4/2=2 余0 2/2=1 余0 1/2=0 余1

       由下往上取余数 10011(2)小数点后

       0.95*2 = 1.9 取整1(1.9-1)*2 = 1.8 取整1(1.8-1)*2 = 1.6 取整1(1.6-1)*2 = 1.2 取整1(1.2-1)*2 = 0.4 取整0(0.4-0)*2 = 0.8 取整0(0.8-0)*2 = 1.6 取整1(1.6-1)*2 = 1.2 取整1 假设小数精度为8位,从上往下去则小数点后为 0.11110011 故19.95 转化为二进制为 10011.11110011 整数时八进制数转换为十进制数:

       八进制就是逢8进1。

       八进制数采用 0~7这八数来表达一个数。

       八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方,以此类推。

       所以,设有一个八进制数:1507,转换为十进制为:

       用竖式表示:

       1507换算成十进制。

       第0位 7 * 80 = 7 第1位 0 * 81 = 0 第2位 5 * 82 = 320 第3位 1 * 83 = 512 相加即为839。

       同样,我们也可以用横式直接计算:* 80 0 * 81 5 * 82 1 * 83 = 839

       结果是,八进制数 1507 转换成十进制数为 839 整数时十六进制数转换成十进制数:

       2进制,用两个阿拉伯数字:0、1;

       8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;

       10进制,用十个阿拉伯数字:0到9; 16进制,16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。

       十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方,以此类推。

       所以,在第N(N从0开始)位上,如果是是数 X(X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。

       假设有一个十六进数 2AF5, 那么如何换算成10进制呢?

       用竖式计算:

       2AF5换算成10进制: 第0位: 5 * 160 = 5 第1位: F * 161 = 240 第2位: A * 162 = 2560 第3位: 2 * 163 = 8192 相加即为10997

       直接计算就是5 * 160 F * 161 A * 162 2 * 163 = 10997

       现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。

       十六进制数的表达方法:

       如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。C,C 规定,16进制数必须以 0x开头。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O)以下是一些用法示例

       int a = 0x100F;int b = 0x70 a;

       至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,C/C 中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2, C和C 并不把它当成一个负数。

       10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2变成8。

       十六进制数与二进制的相互转换:

       二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C,C 程序员都能做到看见二进制数,直接就能转换为十六进制数,反之亦然。

       我们也一样,只要学完这一小节,就能做到。

       首先我们来看一个二进制数:1111,它是多少呢?

       你可能还要这样计算:1 * 20 1 * 21 1 * 22 1 * 23 = 1 * 1 1 * 2 1 * 4 1 * 8 = 15。

       然而,由于1111才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记,:8、4、2、1。即,最高位的权值为23 = 8,然后依次是 22 = 4,21=2,20 = 1。记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。

       二进制数要转换为十六进制,就是以4位一段,分别转换为十六进制。

       如(上行为二制数,下面为对应的十六进制): 1111 1101,1010 0101,1001 1011 F D,A 5,9 B

       反过来,当我们看到 FD时,如何迅速将它转换为二进制数呢?

       先转换F:

       看到F,我们需知道它是15(可能你还不熟悉A~F这五个数),然后15如何用8421凑呢?应该是8 4 2 1,所以四位全为1 :1111。接着转换 D:

       看到D,知道它是13,13如何用8421凑呢?应该是:8 2 1,即:1011。

       所以,FD转换为二进制数,为: 1111 1011

       由于十六进制转换成二进制相当直接,所以,我们需要将一个十进制数转换成2进制数时,也可以先转换成16进制,然后再转换成2进制。同样,如果一个二进制数很长,我们需要将它转换成10进制数时,除了前面学过的方法是,我们还可以先将这个二进制转换成16进制,然后再转换为10进制。

       下面举例一个int类型的二进制数:

       01101101 11100101 10101111 00011011

       我们按四位一组转换为16进制为 6D E5 AF 1B。

第五篇:二进制与十进制的转换

       二进制与十进制的转换

       2022年07月06日 星期五 13:21

       教学目标:

       知识目标:知道二进制与十进制之间的转换方法 操作目标:能在二进制与十进制之间进行进制转换 教学重点:二进制与十进制之间的转换 教学难点:二进制与十进制之间的转换 教学过程:

       一、复习引入

       上一节课已经学习了什么是二进制以及二进制的运算。我们知道二进制只有“0”和“1”两个数码,运算规则为“逢二进一”。

       下面我们复习一下二进制的运算:11011*101=10000111

       二、新课: 二进制数转换成十进制数

       那么10000111应该相当于十进制中的什么数呢?

       我们知道十进制中的数与二进制中的数基本都是一个一个往上加的。我们来填一填下面的表格: 十进制数 0 1 2 3 4 5 6 7 8 9 10 11 12 13 二进制数 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101

       如果我们这样每次加1,那么二进制数与十进制之间的转换肯定会非常烦琐。那么我们有什么办法可以使十进制数非常方便地转换成二进制数呢?

       我们都知道:十进制数是逢十进一,那么数字3175就可以表示成为:

       3175=3×1000 1×100 7×10 5×1

       3175最右边一位是个位,然后每往左边一位就要乘以10。

       同样,二进制数是“逢二进一”,那么对照上面的表,我们可以知道:

       10000111中最右边的是个位上的1,表示十进制数中的1,而往左边一位1就代表十进制中的数字2,再往左边一位的1就代表十进制中的数字4。

       依此类推,我们可以得到以下的关系: 128 64 32 16 8 4 2 1 1 0 0 0 0 1 1 1 →1×128 1×4 1×2 1×1=135

       验算一下上面的运算。11011→1×16 1×8 1×2 1×1=27;101→5;27×5=135。由此可以知,十进制与二进制在位权上的对照: 十进制与二进制的对照

       从右数的位数 7 6 5 4 3 2 1 0 十进制的权 10000000 1000000 100000 10000 1000 100 10 1 二进制的权 128 64 32 16 8 4 2 1

       例1: 将二进制数11011100转换成十进制数 1 1 0 1 1 1 0 0 128 64 32 16 8 4 2 1 1 1 0 1 1 1 0 0 →128 64 16 8 4=220 所以(11011100)2 =(220)10 例2:将二进制数0.11转换成十进制数(0.11)2 =1×2 1×2=0.5 0.25=(0.75)10 总 结:

       一般来说,对于一个有n 位整数和m位小数的二进制数[X]2表达式可以写成: [X]2 = an×2 n-1+an-1×2 n-2+„+a1×20+ a-1×2-1 a-2×2-2+„+a-m×2-m 式中 a 1、„、a n-1 为系数,可取 0 或 1 两种值; 20、21、„、2n-1 为各数位的权。

       练习:把下列二进制数转换成进十制数: 1、100101101 2、110100111 3、1101.1101 三、十进制转换成二进制

       我们前面已经知道,二进制转换成十进制数,每向左边移一个数位,就要乘以2,那么我们倒过来转换我们就可以通过除以2来进行转换。例3:把十进制数13 转换成二进制数:

       所以(13)10→(1101)2 例4:将十进制纯小数 0.562 转换成保留五位小数的二进制小数。可用“乘 2 取整法”求取相应二进制小数: 取整

       0.562 × 2 = 1.124 1 0.124 × 2 = 0.248 0 0.248 × 2 = 0.496 0 0.496 × 2 = 0.992 0 0.992 × 2 = 1.984 1 取整后由高位向低位排得:(0.562)10 =(0.10001)2 总 结:

       任何十进制数都可以将其整数部分和纯小数部分分开,分别用“除 2 取余法”和“乘 2 取整法”化成二进制数形式,然后将二进制形式的整数和纯小数合并即成十进制数所对应的二进制数。-1-2