Java编程那些事儿——计算机软件基本概念
Java, Java培训, Java基础, Java学习, Java教程
第一章 计算机基础
本部分主要介绍计算机相关的知识,重点介绍和软件编程相关的基础知识。
其实对于编程来讲,计算机的基础是越多越深就越好,可是受时间和精力的限制,每一个人了解的其实仍是颇有限,下面就主要编程中经常使用的基础知识,遗漏的地方请你们积极指正和补充。
计算机本质的结构就是将全部的内容数据化,其实软件编程也采用的是一样的逻辑,把各类须要保存的状态数字化。
1.1 计算机软件基本概念
软件的概念
你们都知道,计算机分为硬件和软件,其实看得见摸得着的算硬件,好比硬盘、主板什么的,摸不着的就算软件了。
按照专业点的说法,软件就是一组指令序列,那么如何理解他呢?举个基本的例子,好比你们到学校报名,学校会给你一个单子,通常上面会写,首先到哪里缴费、而后领证件,体检什么的,反正至少也有那么10多条,若是把每条操做都当作指令的话,这个就是软件的本质。
或者按照冯。诺伊曼的计算机体系,计算机就是接受输入,进行处理,反馈结果,其实软件也是这样,提供界面接受用户的输入,根据逻辑进行处理,把结果反馈给用户,不管是普通的软件仍是游戏都是这样。
计算机为何是二进制的?
众所周知,如今的计算机都是以二进制存储和运算数据的,那么为何是二进制而不是常见的十进制呢?
缘由很简单,由于如今的计算机是电子计算机,内部只有两个状态,因此就依据这两个状态建立了一种新的进制形式——二进制。这样极大的简化了电子计算机的结构,能够用电流的有无、光线的有无以及磁性的有无等状态来实现数学上的二进制。数学上用0和1来分别表明这两个状态罢了。
固然,随着科学的发展,之后计算机再也不是电子计算机了,那么二进制也可能就消失了。
计算机存储单位
既然计算机是电子计算机了,那么存储的最小单位就是一个二进制位,英语是bit,简写成b.一位只有2个值,0或者1.因为位的单位过小,因此就设计了另一个概念——字节,英语是byte,简写成B.规定1个字节是8位,即1B=8b.好比你们接触的8位机、16位机等等,就是指CPU一次处理的最小的数据单位。
再大点的单位就依次是KB、MB、GB和TB了,他们之间的进制都是2的10次方,也就是1024,也就是1KB=1024B,1MB=1024KB.这里简单的说一个实际问题,你们买硬盘的时候,好比160GB,这里厂商使用的进制是1000,而不是1024,因此160个GB格式化之后就大概只有:(160 X 1000 X1000 X1000) / 1024/1024/1024 = 149GB
Java编程那些事儿——进制的概念
Java, Java培训, Java基础, Java学习, Java教程
1.2 进制的概念
由于不可能为每一个数值都创造一个符号,因此须要用基本数字组合出复合的数值,这样就有了进制的概念。
其实全部进制都是人为的创造,都是用来计数方便的。如今最经常使用的进制是十进制,固然其它的进制也在使用中。例如“半斤八两”这个成语,就反映了古代一斤等于十六两的概念,也就是十六进制计数方式。
计算机编程中经常使用的进制有二进制、八进制、十进制和十六进制,十进制仍是最主要的表达形式。在编程中,你们书写的数值默认为十进制。
对于进制,有两个最基本的概念:基数和运算规则。
l 基数基数指一种进制中组成的基本数字,也就是不能再拆分的数字。例如十进制是0-9,二进制是0和1,八进制是0-7,十六进制是0-9,A-F(大小写都可)。或者能够简单的这样记忆,假设是n进制的话,基数就是[0,n-1]的数字,基数的个数和进制值相同,十进制有十个基数,依次类推。
l 运算规则运算规则就是进位或借位规则,这个相似于通常计算机书籍中位权的概念,例如对于十进制来讲,该规则是“满十进一,借一当十”,也就是低位的数字满十了向高位进一,从高位借到的一,至关于低位上的十。其它的进制也是这样,对于二进制来讲,就是“满二进一,借一当二”,八进制和十六进制也是这样。
在数学上表示一个数字是几进制,一般使用以下格式:[数值]进制数,例如[10]2 表示二进制数值10. 1.2.1 二进制二进制是计算机内部数据表示的形式,因此学习计算机编程必须熟悉二进制。熟悉二进制有如下几个用途:l 更容易理解计算机的数据存储方式计算机内部的不少转换,例如数据类型之间的强转,均可以用二进制解释最终的结果的值。
1.2.1二进制
的运算速度高二进制的运算速度比十进制高的多。例如求2的n次方,经过移位实现的效率比数学方法高效。
l 使用二进制数值进行数据存储以二进制的形式存储数值,一个是比较节约资源,可使用二进制的位来存储信息,例如常见的硬件控制信息,都是二进制的形式进行提供的。
如前所述,二进制包含0和1两个基数,运算规则是“满二进一,借一当二”,下面简单的介绍一下二进制的计数方式。
例如十进制的0-9用二进制进行表达,则依次是:0,1,10,11,100,101,110,111,1000,1001说明:数值之间使用逗号进行间隔。
下面是二进制的一些基本运算结果:
加法运算
0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 10
减法
0 – 0 = 0
0 – 1 = -1
1 – 0 = 1
1 – 1 = 0
乘法
0 × 0 = 0
0 × 1 = 0
1 × 0 = 0
1 × 1 = 1 l
除法
0 / 0 无心义
0 / 1 = 0
1 / 0 无心义
1 / 1 = 1
如下是一些符合的表达式:110 + 111 = 1101这些基本的运算结构在实际开发中通常不会直接用到,可是经过这些内容能够加深对于二进制概念的理解。
1.2.2 二进制和十进制之间的转换
因为计算机内部的数据是以二进制进行表达的,而十进制又是平常生活中最经常使用的进制,因此它们之间常常须要进行转换。下面介绍一下转换的方式。
1.2.2.1 十进制转换为二进制
十进制整数转换为二进制有三种方法,分别是除二取余、计算器转换和经验法。十进制小数的转换方法最后作简单的介绍。
1. 除二取余法除二取余法是转换时的最基本方法,也是最通用的方法。规则为:使用十进制和2去除,取每次获得的商和余数,用商继续和2相除,直到商为零为止,第一次获得的余数做为二进制的低位,最后一次获得的余数做为二进制的高位,由余数组成的数字就是转换后二进制的值。例如十进制的13转换为二进制的计算步骤以下:
商 余数
13 / 2 = 6 1
6 / 2 = 3 0
3 / 2 = 1 1
1 / 2 = 0 1
则计算的最终结果就是1101. 2.
计算器转换
Windows操做系统中的计算器也能够很方便的实现进制之间的转换。在程序菜单中附件子菜单中打开计算器,从打开的计算器的查看菜单中,选择“科学型”,输入你要转换的十进制的数字,例如13,而后界面上数字显示框西侧的“二进制”,则转换后的数值就直接显示在计算器中。
经验法
对于二进制熟悉之后,那么计算十进制对应的数字能够经过一些基本的数学变换来实现,在使用经验法之前,必须熟记2的0-10次方对应的十进制的值,依次是:1,2,4,8,16,32,64,128,256,512,1024则转换一些特殊的数字时能够极大的提升转换速度,例如数字65,则能够这样转换:65 = 64 + 1 64对应的二进制形式为1000000 1对应的二进制形式为1则65的二进制形式为1000001这个只适合转换一些特殊的数字,适应性没有除二取余法普遍。
十进制小数的转换采用的通常方法是乘二取整法,规则为:对于小数部分先乘二,而后得到运算结果的整数部分,而后将结果中的小数部分再次乘二,直到小数部分为零为止,则把第一次获得的整数部分做为二进制小数的高位,后续的整数部分做为地位就是转换后获得的二进制小数。须要说明的是,有些十进制小数没法准确的用二进制进行表达,因此转换时符合必定的精度便可,这也是为何计算机的浮点数运算不许确的缘由。
例如0.25转换为二进制小数的步骤以下:整数部分0.25 × 2 = 0.5 0 0.5 × 2 = 1.0 1则0.25转换为二进制小数为0.01若是一个十进制数字既有整数部分,也有小数部分,则分开进行转换便可。
1.2.2.2 二进制转换为十进制
二进制转换为十进制采用的方法是:数字乘位权相加法。下面先以十进制为例来讲明该方法,例如十进制数字345的值,5的位权是1,4的位权是10,3的位权是100,则有以下表达式成立: 345=5 × 1 + 4 × 10 + 3 × 100,这就是数字乘位权相加法的原理。
其实对于十进制整数的位权颇有规则,从右向左第n位的位权是十的(n-1)方,例如个位是10(1-1),十位是10(2-1),依次类推。那么二进制整数的位权规律和这个一致,也就是从右向左第n位的位权是二的(n-1)方。
例如二进制整数1011转换为十进制的表达式为:[1011]2 = 1 × 20 + 1 × 21 + 0 × 22 + 1 × 23 = 1 + 2 + 0 + 8=11而对于二进制的小数,也是采用同样的方法,只是二进制小数的位权规则为,小数点后第一位小数的位权是2的-1次方,第二位是2的-2次方,依次类推。
例如二进制小数0.1101转换为十进制小数的表达式为[0.1101]2=1 ×2-1 + 1 ×2-2 + 0 × 2-3 + 1 × 2-4 = 0.5 + 0.25 + 0 + 0.0625=0.8125同理,若是二进制包含整数和小数部分,则分开进行转换便可。
1.2.3 二进制和八进制、十六进制之间的转换
虽然二进制是计算机内部的数据表达形式,可是因为二进制基数太少,则致使数字比较长,为了简化数字的书写,就建立了八进制和十六进制。八进制和十六进制就是对二进制的简化,因此二进制到八进制和十六进制的转换很是简单。
二进制整数转换为八进制的方法是“三位一并”,也就是从右侧开始,每3位二进制数字转换为八进制的一位,依次类推,由于二进制的三位数字能够表达的区间是 000-111,恰好和0-7重合。例如:二进制的10111转换为8进制为:最后三位111转换为7,前面的数字10转换为2,则转换后获得的八进制数字为27.二进制整数转换为十六进制的方法是“四位一并”,例如10111转换为十六进制是0111转换为7,1转换为1,则转换后获得的十六进制数字是 17.二进制小数转换为八进制的方法也是“三位一并”,只是转换时从小数的高位开始,也就是小数的左侧开始。例如0.10111转换为八进制是101转换为5,110转换为6,则转换获得的八进制小数为0.56.须要特别注意的是,小数最后若是不足三位,必定要在后续补零之后再进行转换。
二进制小数转换为十六进制的方法也是“四位一并”,只是转换时从小数的高位开始。例如二进制小数0.10111转换为十六进制小数为,1011转换为b,1000转换为8,则转换后获得的十六进制是0.b8.若是二进制数包含整数和小数部分,则分开进行转换。编程
了解更多详情请登陆超人学院网站http://www.crxy.cn或者每周日晚八点半相约免费公开课https://ke.qq.com/course/53102#term_id=100145289 具体详情请联系QQ2435014406数组