1.进制及数值数据的编码
▪ 十进制
– 基数是10,有10个不同的数学符号,即0-9
▪ 二进制
– 基数是2,有2个不同的数学符号,即0和1
▪ 八进制
– 基数是8,有8个不同的数学符号,即0-7
▪ 十六进制
– 基数是16,有16个不同的数学符号,即0-9,A,B,C,D,E,F
原码
有了数值的表示方法就可以对数进行算数运算,但是很快就发现 用带符号位的原码进行乘除运算时结果正确,
而在加减运算的时 候回出现问题,如下:
(1)10 - (1)10 = (1)10+(-1)10 = (0)10
(00000001)原+(10000001)原=(10000010)原=(-2)
显然是不正确的
反码
反码表示规则为:如果是正数,则表示方法和原码一样,如果是 负数,则保留符号位1,
然后将这个数字的原码按照每位取反, 则得到这个数的反码表示形式
– 数字6在计算机中反码就是它的原码:0000 0110
– 数字-6在计算机中反码为:1111 1001
因为在两个正数的加法运算中是没有问题的,于是就发现问题出 现在带符号位的负数身上,
对除符号位外的其余各位逐位取反就 产生了反码,反码的取值空间和原码相同且一一对应,
下面是反 码的减法运算:
1-(1)=1+(-1)=0
(00000001)反+(11111110)反=(11111111)反=(-0)有问题
1-(2)=1+(-2)=-1
(00000001)反+(11111101)反=(11111110)反=(-1)正确
补码
问题出现在(+0)和(-0)上,在人们的计算概念中0是没有正负之分 的 ▪ 于是就引入了补码的概念,
负数的补码就是对反码加一,而正数 不变,正数的原码反码补码都是一样的,在补码中用(-128)代替 了(-0),
所以补码的表示范围为 – (-128~0~127),共256个
补码是计算机表示数据的一般方式,其规则为:如果是正数,则 表示方法和原码一样,如果是负数,
则将数字的反码加上1(相 当于将原码数值按位取反然后在对地位加1)
注意:(-128)没有相对应的原码和反码,(-128)=(10000000)的补 码的加减运算如下:
▪ 1-1=1+(-1)=0
▪ (00000001)补+(11111111)补=(00000000)补=(0) 正确
▪ 1-2=1+(-2)=-1
▪ (00000001)补+(11111110)补=(11111111)补=(-1) 正确
▪ 所以补码的设计目的是:
– 使符号位能与有效值部分一起参加运算,从而简化运算规则
– 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计
▪ 所有这些转换都是在计算机的最底层进行的,
而在我们使用的汇 编、C等其他高级语言中使用的都是原码
移码
以后再说
2.Java流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把
语句组合成能完成一定功能的小逻辑模块。
▪ 顺序结构
▪ 选择结构
– if-else
switch
1.switch语句会根据表达式的值从相匹配的执行,一直执行到break标签处开始ak语句处或者是
switch语句的末尾。与任一case值不匹配,则进入
default语句(如果有的话)
2.只能处理等值条件判断的情况,且表达式必须为
byte,short,int或char类型 ,不能是String或double,float.1.7之后可以使用string
3.常量值必须是与表达式类型兼容的特定的一个常量
4.不允许有重复的case值
5.default子句为可选
▪ 循环结构
– while
– 先判断,后执行。
do-while
先执行,后判断。
for ▪ 跳转
– break continue
return
语句从当前方法退出,返回到调用该方法的语句处,幵从该语句的下条语句处继续执行程序。
▪ 多重循环
▪ 方法
– 定义、调用、重载
▪ 递归算法
递归的缺点
– 但是递归调用会占用大量的系统堆栈,内存耗用多,
– 在递归调用层次多时速度要比循环慢的多
▪ 递归的使用场合
– 任何可用递归解决的问题也能使用迭代解决。
– 当递归方法可以更加自然地反映问题,幵且易亍理解和调试,幵且丌强调效率
问题时,可以采用递归;
– 在要求高性能的情况下尽量避免使用递归,递归既花时间又耗内存。
一维数组
数组是相同类型数据的有序集合.
– 相同类型的若干个数据,按照一定先后次序排列组合而成。
– 其中,每一个数据称作一个数组元素
– 每个数组元素可以通过一个下标来访问它们.
▪ 数组特点:
– 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
– 其元素必须是相同类型,不允许出现混合类型。
– 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
①数组定义、特点、内存分配
②使用一维数组存储数据 数组的应用
①查询元素
②数组类型做形参
③查询最大值最小值
④添加元素或删除元素
⑤冒泡排序
⑥Arrays工具类
⑦理解main(String args[])
⑧可变参数
一维数组的声明方式有两种:
type[] arr_name;
type arr_name[];
▪ 一维数组
数组是引用类型,它的元素相当于类的实例变量,因此数组一经 分配空间,
其中的每个元素也被按照实例变量同样的方式被隐式 初始化。
– 数组的特点:长度固定,连续空间,存储同一种类型数据
– 数组内存分配图
– for-each循环:简单、主要用于遍历操作
▪ 一维数组的应用
– 数组优缺点
▪ 优点:按照索引查询效率高
▪ 缺点:添加删除元素效率低;按照内容查询效率低(无序)
– 冒泡排序:基本的排序算法,理解排序规则,实现并完善排序代码
– 数组类型做形参
▪ 二维数组:
– 实质是每个元素是一维数组的一维数组;、