Unit4二进制存储、运算符、引用数据类型初步认识

Unit4二进制存储、运算符、引用数据类型初步认识

1.       进制转换

2.       原码、反码、补码

3.       运算符

4.       引用数据类型

5.       案例:计算器

 

1、 进制转换

二进制、八进制、十进制、十六进制互相转换。

出现由来:

l  电路的开关闭合对应0、1,正好是二进制

l  八进制、十六进制表现的数据更广。

八进制:使用3位二进制表现数据,对应逢八进一。

        001 –>1

        111->7  //三位数最大表现数据7,再进一位,就是逢八进一

        01 011 111 –》137

十六进制:使用4位二进制表现数据,对应逢十六进一。

        1111 –》 //四位数最大表现数据是15,再进一位,就是逢十六进一

不同进制的表现形式:0b/0/0x

1010 1101 –》AD

l  其他进制转十进制:

u  二进制转十进制:

0101 1010 –》0*20+1*21+0*22++1*23+1*24+0*25+1*26+0*27

u  八进制转十进制

1753 5674 –》4*80+7*81+6*82++5*83+3*84+5*85+7*86+1*87

u  十六进制转十进制

ABCD 1234-》4*160+3*161+2*162+1*163+13*164+12*165+11*166+10*167

规律:每一位上的数字 (系数)* 进制数n,n是从右往左,从0数。

l  十进制转其他进制:

对进制数进行整除除尽取余数,余数翻转。

l  八进制和十六进制互转:

转回二进制,再转其他进制即可。

如八进制01234567 转十六进制

先转二进制:1234567->1 010 011 100 101110 111

再将二进制转为十六进制:101 0011 1001 0111 0111->53977

同理,十六进制转八进制也是先转二进制,再转八进制。

 

2、       原码、反码、补码

原码:就是数字的二进制表现形式。

17:10001

28:  11100

二进制转十进制:系数* 2n次幂

n是从右往左,从0开始计数。

1     1     1     1     1     1     1     1

1     0     1     1     0     1     1     0

快速运算:每一位都是前一位的2的倍数,将递增规律带入二进制中,可以迅速的算出结果。

1     0     0     0     0     0     0     0     0     28

1     1     1     1     1     1     1     1  八位二进制能表示的最大数

=                                                      1

1     1     0     1     0     1     1     1     使用减法运算

255 – 32 -8 =215;.

正数的原码:二进制的表现形式,最高位是0

负数的原码:

绝对值的二进制数据,符号位变为1.

5:    0000 0101

-5:  1000 0101

 

在计算机中,数据都是补码形式存在的。

正数的补码、反码和原码一致。

负数的反码:

       最高位(符号位)不变,然后其他位取反(0变1,1变0)

负数的补码:

       反码+1;

       原码最高位不变,然后其他位取反,再加1.

因为计算机中,数据都是补码形式存在,那么当对这些数据进行位运算的时候,就应该是对他们的补码来进行运算,而不是针对原码运算。

       例子:

              -10>>2=

              1000 1010->转补码:11110110 >>2 =11111101转回原码

                                                                                      10000011=-3

为什么使用补码就可以达到减法运算的目的呢?

模概念:取值范围,当表示的数据超过了范围,超过范围的数据不要了。

1111 1111

+1

=1 00000000 //这个1超过了数据表示范围,不要了,那么他的值是0

 

1111 1111

+2

=1 00000001

 

30+(-10)

0001 1110+1000 1010 原码

0001 1110+1111 0110 变成了补码运算

0001 1110

1111 0110

1 00010100

转回原码:00010100

 

 

3、运算符

运算符是用来计算数据的指令。数据可以是常量,也可以是变量。被运算符操作的数称为操作数。

算数运算符

       将操作数参与数学计算(通常为数学计算)

运算符

运算规则

范例

结果

+

正号

+3

3

+

2+3

5

+

连接字符串

“中”+“国”

“中国”

-

负号

int a=3;-a

-3

-

3-1

2

*

2*3

6

/

5/2

2

%

取模

5/2

1

++

自增

int a=1;a++/++a

2

--

自减

int b=3;a--/--a

2

      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l  加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。

l  除法“/”当两边为整数时,取整数部分,舍余数。当两边为浮点型时,按正常规则相除。

l  “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。

l  整数做被除数,0不能做除数,否则报错。

l  小数做除数,除数为0结果为Infinity,对0取模结果为NaN

l  副作用

一般情况下,运算符不会改变参与计算的变量的值。而是在原有变量值不变的情况下,计算出新的值。

但是有些操作符会改变参与计算的变量的值,而这种动作叫产生了副作用,比如++,--。

++或- -为前缀时,先产生副作用,再使用值

++或- -为后缀时,先使用值再产生副作用。

l  自增或自减,符号在前:先对数据本身进行自增、自减运算运算,再参与其他运算(打印、或其他比较等运算符),符号在后:先进行其他运算,在对本身进行一个自增或自减运算

 

赋值运算符

       为变量赋值的运算符

运算符

运算规则

范例

结果

=

赋值

int a=2

2

+=

加后赋值

int a=2,a+=2

4

-=

减后赋值

int a=2,a-=2

0

*=

乘后赋值

int a=2,a*=2

4

/=

整除后赋值

int a=2,a/=2

1

%=

取模后赋值

int a=2,a%=2

0

 

l  注意:诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。

4、引用数据类型

与定义基本数据类型变量不同,引用数据类型的变量定义及赋值有一个相对固定的步骤或格式。

每一种引用类型都有一定的功能。我们可以使用每一个引用类型实例来执行该功能。

引用类型变量赋值格式

数据类型  变量名  =  new 数据类型(固定参数);

这里的new 数据类型(固定参数)是用来创建引用类型实例,而变量的值就是这个实例。使用该变量,就是使用这个实例。

引用类型调用方法格式

变量名.方法名();

当调用方法后,经常会有一个功能执行后的执行结果,这里叫做返回值。该值就是一个数值,可以为其他变量赋值或参与计算。

步骤

导入引用类型变量所在包,如果是lang包下的文件不需要导包,其他包下的则需要导包

使用import关键字来进行导包。

包是用来组织类结构的。每个类应该都属于某个包下。当业务冗杂之后会建立包来组织数量繁多的类。

定义引用类型变量并创建实例赋值给变量

使用引用类型变量调用方法,完成功能

Scanner简介

       Scanner是用来接收键盘录入信息的引用类型。

l  所属包:java.util.Scanner

l  创建实例格式:Scanner sc = newScanner(System.in);

l  方法简介

  public int nextInt() 用来接收控制台录入的数字
  public String next() 用来接收控制台录入的字符串
  使用:sc.nextInt();sc.next()
Math简介

       Math类是数学工具类,提供了许多数学算法方便数字运算。

l  所属包:java.lang.Math  java.lang包下的所有类无需导入,可以直接使用

l  创建实例格式:Math比较特殊,不需要创建实例可以直接使用Math.方法的形式完成方法调用

l  方法简介

publicstatic int min(int a,int b) 求两个数的最大值

public static int max(int a,int b) 求两个数的最小值
public static long round(double a) 四舍五入
public static double ceil(double a) 向上取整
public static double floor(double a) 向下取整

                     求最大值:Math.max(1,2);

                     求最向上取整:Math. ceil (1.123);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值