了解进制的转换,更深入掌握计算机
本文节带“//”为作者注释
2进制语言,属于机器的低级语言,但却是可以直接和计算机及其他包含运算计算等数码产品进行交流的一种语言,目前普遍的程序语言编辑,通属高级程序编辑,通过编译器实际代码转换为2进制机器语言。
作者小写程序代码2年多,都只是有时间小写一会,对于很多实际的应用并不完全掌握。
以前曾看过关于2进制的学习,可能做者的理解观念不太强,难于理解上,以下写出新手自学针对10进制转2进制的使用规程:
(文档内容由网络搜索提供,经作者收集整合,如有部分解析错误,第一时间进行修正并注释其含义)
1、 首先,我们要了解二进制:
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,当前的计算机系统使用的基本上是二进制系统。
2、 二进制数据的表示法:
以下文节出自百度百科,对于高中以下文化的程序员来说,这无疑是一很大的公式挑战,作者曾小看过百回,也未懂其意义,转过来先,未来总会理解。
二进制数据也是采用位置计数法,其位权是以2为底的幂。例如二进制数据110.11,逢2进1,其权的大小顺序为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的平方,以此类推。
【例1102】将二进制数据111.01写成加权系数的形式。
解:(111.01)2=(1×2^2)+(1×2^1)+(1×2^0)+(0×2^-1)+(1×2^-2)
3、 实际计算10进制转2进制的除法形式:
如一数值:256,对其进行2进制的转换(其实就是除2,取余数)
256/2=0 //余数为0;
128/2=0 //余数为0;
64/2=0 //余数为0;
32/2=0 //余数为0;
16/2=0 //余数为0;
8/2=0 //余数为0;
4/2=0 //余数为0;
2/2=0 //余数为0;作者开始也昏了,忘记这是取余数,不是直接取结果
1/2=1 //在这余数为1;不可再进行除2;
然后将值倒序取出:100000000; 该值即为十进制数值256转化为二进制后的数值;
//注:以下短文转自百度百科
在现实生活和记数器中,如果表示数的“器件”只有两种状态,如电灯的“亮”与“灭”,开关的“开”与“关”。一种状态表示数码0,另一种状态表示数码1,1加1应该等于2,因为没有数码2,只能向上一个数位进一,就是采用“满二进一”的原则,这和十进制是采用“满十进一”原则完全相同。
1+1=10,10+1=11,11+1=100,100+1=101,
101+1=110,110+1=111,111+1+=1000,……,
可见二进制的10表示二,100表示四,1000表示八,10000表示十六,……。
二进制同样是“位值制”。同一个数码1,在不同数位上表示的数值是不同的。如11111,从右往左数,第一位的1就是一,第二位的1表示二,第三位的1表示四,第四位的1表示八,第五位的1表示十六。
所谓二进制,也就是计算机运算时用的一种算法。二进制只由一和零组成。
比方说吧,你上一年级时一定听说过“进位筒”(“数位筒”)吧!十进制是个位上满十根小棒就捆成一捆,放进十位筒,十位筒满十捆就捆成一大捆,放进百位筒……
二进制也是一样的道理,个位筒上满2根就向十位进一,十位上满两根就向百位进一,百位上满两根…… 二进制是世界上第一台计算机上用的算法,最古老的计算机里有一个个灯泡,当运算的时候,比如要表达“一”,第一个灯泡会亮起来。要表达“二”,则第一个灯泡熄灭,第二个灯泡就会亮起来。
二进制就是等于2时就要进位。
0=00000000
1=00000001
2=00000010
3=00000011
4=00000100
5=00000101
6=00000110
7=00000111
8=00001000
9=00001001
10=00001010
……
即是逢二进一,二进制广泛用于最基础的运算方式,计算机的运行计算基础就是基于二进制来运行。只是用二进制执行运算,用其他进制表现出来。
其实把二进制三位一组分开就是八进制, 四位一组就是十六进制
说实在的,如此的解释可能对有数学文化的人或者看懂的多
实际编写吧,看了也许就更能慢慢琢磨底层的东西,好容易掌握以上的通过说明:
以数值15为例:
1=1;
2=1+1;2=10;
3=2+1;=10+1;=11;
4=3+1;=11+1;=100;
5=4+1;=100+1;=101;
6=5+1;=101+1;=110;
7=6+1;=110+1;=111;
8=7+1;=111+1;=1000;
9=8+1;=1000+1;=1001;
10=9+1;=1001=1;=1010;
11=10+1;=1010+1;=1011;
12=11+1;=1011+1;=1100;
13=12+1;=1100+1;=1101;
14=13+1;=1101+1;=1110;
15=14+1;=1110+1;=1111;
{//随便写个大概,如2进制数值8
8=7+1;(7=111;实际8=111+1)
111
+ 1
= 112; //产生逢二进一
= 120; //产生逢二进一
= 200; //产生逢二进一
= 1000; //结果
}
当然,能知道固定数值,如10表示二,100表示四,1000表示八,10000表示十六这些,更容易用逢二进一公式进行计算;更专著于除2计算;
15/2=1
7/2=1
3/2=1
1/2=1
从下往上的结果:1111;
以下为二进制转换十进制的转换公式
(今天和一兄弟一起研究得到的实际数据公式,具体简化点的记忆公式及十六进制后期更新上)
例:
1110 (2进制10 数值14)
1*2^3+1*2^2+1*2^1+0*2^0=1*8+1*4+1*2+1*0=8+4+2=14
1111 (2进制10 数值15)=1*2^3+1*2^2+1*2^1+1*2^0
以上看来或者会不太清楚,简化点的来说,2进制数值1110(10进制数值14)的计算
由右至左进行 <当前数值*2^当前位置次方>,由0开始
最右边的0的计算: 当前数值0*2^0当前位置的次方;
第二位数: 当前数值1*2^1当前位置的次方;
第三位数: 当前数值1*2^2当前位置的次方;
第四位数(左数1位): 当前数值1*2^3当前位置的次方;
//在这可以发现,位数每向左移一位,次方数+1;
然后计算每个位数的计算结果:
最右边的结果为:0;
第二位数结果为:2;
第三位数结果为:4;
最左边的结果为:8;
然后进行相加=14;
关于作者