现在回想以前所学的东西有一些遗忘,决定在复习一遍,总结一些复习笔记!
计算机语言的发展:
计算语言:
计算机直接识别的语言,二进制(语言),由0和1组成,以而为单位的进制换算数据。计算机底层对数据的处理是靠二进制。使用二进制进行开发是最直接的,原因是计算机底层直接识别的语言就是二进制;但是对于我们开发人员是有难度的。
汇编语言:
汇编语言就是由字母和一些特殊的符号组成,都代表对应意义。
对于我们开发人员阅读性提高,但是计算机不识别,会自动转成
对应的二进制。有个自动转换的过程。
程序设计语言:
纯粹的使用英文单词,阅读性就更高了,但是计算机还是不直接识别,
只识别二进制,所以也有自动转换的过程,将程序设计语言转成二进制
语言。 C C++ C#(微软) java j++(被java干掉了) object-c 、 .net 易语言
思想:
1.面向过程:C
2.面对对象:C++ C# java object-c
字符形式的程序-------->字节形似的程序
所有的高级语言,c c++ c# java对于我们简单易懂,基本都是英文,
字符形式(容易阅读,显示)。
计算机只识别二进制(字节),所以就需要将我们可看可动的字符形式
的程序语言转成计算机可懂的字节形式的语言。
把我们所编写的字符形式程序转成字节形式程序。
什么是字节和字符:
字节(byte):是[计算机]用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。
字符:字符是指计算机中使用的字母、[数字]、[字]和[符号],包括:1、2、3、A、B、C、~!·#¥%……—*()——+等等
bit:
数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。
字符与字节的换算:
英语是ASCII编码,1个字节8位二进制,共有256中组合,排英语的大小写字母,数字和部分符号绰绰有余。
而中文字很多,256完全不够,2个字节8位二进制有65536中组合,用Unicode排就可以排出,甚至一个Unicode可以排完中日韩文所有常用字。
[ASCII码]:一个英文字母(不分大小写)占一个字节的空间,一个中文[汉字]占两个字节的空间。一个[二进制数]字序列,在[计算机]中作为一个数字单元,一般为8位二进制数,换算为[十进制]。最小值0,最大值255。如一个ASCII码就是一个字节。
UTF-8编码:一个英文[字符]等于一个字节,一个中文(含繁体)等于三个字节。
Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。
符号:英文[标点]占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小。不同数量级间
存储单位:
8位一字节 bit 就是0和1 组成的 (010101010) 组成一个字节;
位 字节 千字节 兆字节 兆字节 太字节
bit byte KB MB GB TB
8bit = 1byte ; 1024b = 1kb ; 1024kb = 1MB ; 1024MB = 1GB ; 1024GB = 1TB
因此1024又称为程序员节;
在招聘网站中的 8k,10k 也是根据 千字节(KB)得来的;
整数的进制转换:
进制:单位
- 10进制就是以10为单位,逢10进1,所以在10进制数值的各个位上的
数最大值是9,最小值是0,绝不出现10,因为10就进到上一位去了。 - 2进制就是以2为单位,逢2进1,所以在二进制数据的各个位上的数值
最大是1,最小是0,绝不会出现2。
计算机直接识别的语言是二进制,就是0 1组合。 - 8进制就是以8为单位,逢8进1,所以在8进制数据的各个位上的数值
最大是7,最小是0,不会出现8。
8进制数据是以 0开始为标识。 - 16进制就是以16为单位,逢16进1,所以在16进制数据的各个位上的
数值最大是15,最小是0,不会出现16。
16进制数据是以 0x开始作为标识
数字只有09,1015是分别用字母 a~f
10进制和2进制的转换:
一、10转2:
10进制数无限除以2,倒叙取余。
2转10:
2进制数从最高位开始,当前位上的数乘以二进制的总位数
-1的2的次方,后面以此类推,最后累加和,即是其对应的10
进制数。
二进制的基数表:
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
如果是0就没有值,是1就是对应的值,然后相加!就是二进制对应的十进制数!
比如:
二进制转成十进制:就是一个成语2的次幂额过程。
0000 0110: 02(0)+12(1) + 12(2) + 0 2(3)+0*2(4)...........= 6
0 + 2 + 4 + 0 +0.............. . = 6
快速计算法:心算
0000 0110: 对应的位置: 进行相加 0 + 2 +4 = 6
2转10:
2进制各个位上的数不是1就是0,1乘以其基数就是基数,0
乘以任何数都是0。直接二进制位上是1的基数相加即可。
10转2:
通过二进制的基数表去拼10进制数,那么该二进制就是该
10进制数的二进制数。
010010110 ---> 150
17 ----> 10001
26 ----> 11010
在java中整数默认是32为的二进制的整数
有效二进制,能够表示数值的最短的二进制。
3 ---> 011(有效二进制数)
3 ---> 0000-0000 0000-0000 0000-0000 0000-0011
上面两个3占用的内存空间不一样,而表示的值的大小一样。
8位1字节,8个二进制位是一个字节:
8 bit = 1 byte
.class文件叫字节码文件:
.class文件是将.java源文件中的源代码编译成的计算机识别、
二进制数据,却叫字节码。因为在计算机中对于二进制的处理
的最小单位是字节,即使不够呢以字节也按1字节去分配空间。
规定:
1.二进制数最高位是1表示负数,最高位是0表示正数。
2.正数: 6
原码:就是其对应的二进制数
0000-0000 0000-0000 0000-0000 0000-0110
反码:和其原码一致
0000-0000 0000-0000 0000-0000 0000-0110
补码:和其原码一致
0000-0000 0000-0000 0000-0000 0000-0110
负数:-6
原码:是其相反数(对应的正数)的二进制数,
最高位(符号位)换成1。
1000-0000 0000-0000 0000-0000 0000-0110
反码:原码除了符号位,其它位都做0 1互换
1000-0000 0000-0000 0000-0000 0000-0110
1111-1111 1111-1111 1111-1111 1111-1001
补码:是其反码+1
1111-1111 1111-1111 1111-1111 1111-1001
0000 0000 0000 0000 0000 0000 0000 0001
1111-1111 1111-1111 1111-1111 1111-1010
数值在内存中的二进制的表示形式都是其补码。
二、8进制和10进制的转换:
10转8:
10进制数无限除8,倒序取余。
8转10:
从8进制的最高位开始,当前位上的数乘以8进制数的总位数-1的
8的次方,以此类推,累加和。
三、10进制和16进制的转换:
10转16:
10进制数无限除16,倒叙取余.
16转10:
从16进制数的最高位开始,当前位上的数乘以16进制数的总位数-1
的16的次方,以此类推,累加和。
四、8进制和2进制的转换:
2转8:
2的3次方是8,3个二进制位是1个8进制位。
将2进制数每3位一组,每组转成其对应的10进制数,就是
一个8进制数,然后将所有的8进制数连接就组成完整的
8进制数。
000 110 101 110
0 6 5 6
0656
46+128+256=430
6*64+40+6=430
8转2:
就是将1个8进制位的数转成3位的二进制数,拼接起来
就是完整的2进制数。
0656
000 110 101 110
五、16进制和2进制的转换:
2转16:
4个二进制位是1个16进制位。
将二进制数每4位分成一组,转成对应的10进制数,
拼接起来就是完整的16进制数。
0001 1010 0110
1 10 6
0x1a6
16转2:
将16进制数的位上的每个数转成对应的4位的2进制数,连接
起来就是完整的2进制数。
0x1a6
0001 1010 0110