软件基本概念(以概念点的形式展开,不断补充中…)

1.计算机为什么使用二进制
因为电子计算机内部只有两个状态,比如通电和不通电(更专业的说法是:计算机是由逻辑电路组成,逻辑电路通常只有两个状态,开关的接通与断开,这两种状态正好可以用“1”和“0”表示。)
2.计算机存储单位
位(bit):
电子及计算机最小的存储单位是一个二进制位,(bit),简写是b,1位只有两个值0或1(废话,二进制可不就2个值么...)。
字节(byte):
因为位这个单位太小,所以就设计了字节这一概念,(byte),简写是B,规定1个字节是8位,即1B=8b。
再大一些的单位一次是KB(KiloByte)、MB(MegaByte)、GB(GigaByte)、TB(TeraByte)、PB(PetaByte)、EB(ExaByte)、ZB(ZettaByte)、YB(YottaByte)各单位间的进制都是2的10次方,也就是1024(好熟悉呀,CLer飘过…)1KB=1024B,1MB=1024KB,以此类推。
说个实际问题,买U盘或硬盘的时候,比如160G硬盘,硬盘厂商使用的进制是1000,不是1024,所以160GB硬盘容量格式化以后大概只有(160*1000*1000*1000)/1024/1024/1024≈149GB。(可见无商不奸啊~)
3.进制的概念
现在最常用的进制是十进制,以前应该有其他的进制,比如“半斤八两”就反映了古代一斤等于16两的概念,也就是十六进制。
基数:
就是一种进制中组成的基本数字,例如二进制是0和1,八进制是0~7,十进制是0~9,16进制是0~9、A~F(大小写均可)。
运算规则:
以十进制来说就是“满十进一,借一当十”这个大家都懂的,不多说~
进制间转换:
二进制转十进制(二转十,下边都简写了)

 

    比如:[1011]2=(1*20)+(1*21)+(0*22)+(1*23)=1+2+0+8=11

       [0.1101]2=(1*2-1)+(1*2-2)+(0*2-3)+(1*2-4)=0.5+0.25+0+0.0625=0.8125

 十转二

    比如: 13转成二进制

                  商   余

    13 / 2 = 6    6    1

     6 / 2 = 3    3    0

     3 / 2 = 1    1    1

     1 / 2 = 0    0    1

    结果就是1101

 二转八

    二转八的方法是三位一并,从右侧开始,每3位二进制数字转为八进制的一位,

    比如:10 100 110 010 转八进制

         10  100  110  010

          2    4   6    2

    结果是[2462]8

 八转二

    基本就是二转八倒过来,要记住0~7对应的二进制数

                      

二进制

八进制

000

0

001

1

010

2

011

3

100

4

101

5

110

6

111

7

 二转十六

    二转十六的方法是四位一并,从右侧开始,每4位二进制数字转为八进制的一位,

    比如:101 0011 0010转十六进制

 101 0011 0010

          5   3   2

    结果是[532]16

 十六转二

    二转十六倒过来,要记住0~9、A~F对应的二进制数

二进制

十六进制

0000

0

0001

1

0010

2

0011

3

0100

4

0101

5

0110

6

0111

7

1000

8

1001

9

1010

A

1011

B

1100

C

1101

D

1110

E

1111

F

    如果是八、十、十六之间转,我会先转成二进制,然后在转成需要的进制

4.计算机内部的数据表达

 整数的表达:

     整数有正负,计算机内部只能存0和1,所以将符号数字化,用二进制码的最高位表示符号位,规定该位0代表正,1代表负。

   计算出的二进制形式,都称作整数的原码,为了计算方便,存储和运算时都采用了补码的格式。

   正数:规定正数的原码,反码和补码都是其本身。

8

原码

反码

补码

00001000

00001000

00001000

00001000

负数:负数的原码,最高位存储符号位,其他位存储数值;
负数的反码,是指符号位不变,其他位取反;
负数的补码,是指在反码的数值位上加1,运算后得到的结果,只计算数值位,不改变符号位;

-8

原码

反码

补码

10001000

10001000

11110111

11111000


规律:补码的补码等于负数的原码。
注:小数(浮点数)的存储形式和整数不同
字符的表达
字符指计算机内部单个的符号(包括标点符号、英文字母和汉字等等),计算机无法直接表达,所以就对每个字符进行了编号,例如a(注意是小写a)的字符编号是97,b字符编号为98等等。(常用的还有A编号65)
由于需要编号的字符很多,就专门为此规定了字符集,常见的字符集有ASCII,GB2312等。在计算机内部存储、运算、传输时,只需要使用该编号。
字符在程序内部可以参与运算,参与运算的就是这个字符的编号,字符集规律是很多字符变换逻辑实现的基础。

5.网络编程基础

WHAT 什么是网络编程
网络编程的本质就是两个设备(计算机,手机、pad等移动终端)之间的数据交换,现在的网络编程基本都是基于请求/响应方式的,也就是一个设备请求把数据发送给另一个设备,另一个设备接收并反馈数据。
在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Client),等待其他程序连接的程序叫做服务器(Server)。客户端在需要的时候启动,发送请求;而服务器为了能够时刻响应连接,需要一直启动。以打工商银行语音电话为例,我们自身是客户端,工商银行的语音系统是服务端,拿起电话拨打95588就类似是向服务器发出请求。
连接一旦建立,客户端和服务器就可以进行数据传递了,在一些程序中,程序既有客户端功能也有服务器功能,像是电驴,迅雷,(用的时候边下载边上传嘛~)
IP地址和域名
在现实生活中,如果要打电话则需要知道对方的电话号码,寄信要知道收信人的地址,在网络通信中也是这样,需要知道一个设备的位置,则需要使用该设备的IP地址。
IP地址是一个规定,现在使用的是IPv4,即由4个0~255之间的数字组成,在计算机内部存储时只需4个字节即可。在计算机中,IP地址是分配给网卡的,每个网卡有一个唯一的IP地址,如果一个计算机有多个网卡,则该计算机可以有多个不同的IP地址,在同一个网络内部,IP地址不能相同。
由于IP地址不方便记忆,所以又专门创造了域名的概念,其实就是给IP取一个字符的名字,例如sina.com,sohu.com等,IP和域名之间存在一定的对应关系,如果IP是身份证,域名就是你的姓名。其实在网络中只能使用IP地址进行数据传输,所以在传输前,需要把域名转换为IP,这个由DNS的服务器专门来完成。
所以在网络编程中,可以用IP或域名来标识网络上的一台设备。
端口
为了在一台设备上可以运行多个程序,人为的又设计了端口的概念,类似的例子是公司内部的分机号码。
规定一个设备有2的16次方(65536)个端口,每个端口对应一个唯一的程序。每个网络程序,无论是客户端还是服务器端,都对应一个或多个特定的端口号。由于0~1024之间多被操作系统占用,所以实际编程时一般采用1024以后的端口号。
使用端口号,可以找到一台设备上唯一的一个程序。
所以如果需要和某台计算机建立连接的话,只需要知道IP地址或域名即可,但是如果想和该台计算机上的某个程序交换数据的话,还必须知道该程序使用的端口号。
数据传输方式
知道了如何建立连接,接下来就是如何传输数据了,不管是有线传输还是无线传输,数据传输就两种方式,TCP和UDP。
TCP
<!--[if !supportLists]-->1 <!--[endif]-->TCP(Transfer Control Protocol)
(这个我也不懂是神马意思啦...反正先抄过来,学网络的(CCNA,CCNP)的应该懂吧..)
这个TCP传输控制协议方式,是一种稳定,可靠的传送方式,只需要建立一次连接,就可以多次传输数据。很像是打电话,只需拨一次号,就可以实现一直通话,如果你说的话不清楚(服务器没有收到请求),对方会要求你重复(重新发请求),保证传输的数据可靠。
这种方式的优点是稳定可靠,缺点是建立连接和维持连接的代价高,传输速度不快。
UDP
<!--[if !supportLists]-->1 <!--[endif]-->UDP(User Datagram Protocol)
这个UDP也叫用户数据报协议方式,该传输方式不建立稳定的链接,每次发送数据都直接发送。类似于发短消息,发送多条短息的话,就需要多次输入对方的号码。该传输方式不可靠,数据有可能收不到,系统只保证尽力发送。
该种方式的优点是开销小,传输速度快,缺点是数据有可能会丢失。
在实际的网络编程中,要根据需要选择任何一种传输方式,或组合使用这两种方式实现数据传递。(多扯一句,QQ的网络数据传输这两种方式都用到了)
协议的概念
协议(protocol)是网络编程中一个非常重要的概念,指的是传输数据的格式。因为在网络中传输的信息是各种各样的,但在程序中得到的都是一组数值,如何去读这些数值呢?需要提前规定好数据的格式,在客户端按照该格式生成发送数据,服务器端按照该格式阅读该数据,然后再按照一定的格式生成数据反馈给客户端,客户端再按照该格式阅读数据。类似发电报,发电报的内容要转换成特定的编码。

图:协议--格式转换图
一般程序的协议都分成客户端发送的数据格式,以及服务器端反馈的数据格式,客户端和服务器都遵循该格式生成或处理数据,实现两者之间的复杂数据交换。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值