1.计算出十进制46对应的二进制,八进制,十六进制的值。
二进制
46/2 = 23 余 0
23/2 = 11 余 1
11/2 = 5 1
5/2 = 2 1
2/2 = 1 0
1/2 = 0 1
二进制的值是 0b101110
二进制
46/2 = 23 余 0
23/2 = 11 余 1
11/2 = 5 1
5/2 = 2 1
2/2 = 1 0
1/2 = 0 1
二进制的值是 0b101110
八进制
46/8 = 5 6
5/8 = 0 5
八进制的值是 056
46/8 = 5 6
5/8 = 0 5
八进制的值是 056
十六进制
46/16 = 2 14
2/16 = 0 2
十六进制的值是 0x2e
46/16 = 2 14
2/16 = 0 2
十六进制的值是 0x2e
2.进制的练习
(1)计算出十进制80对应的十六进制和二进制的值
十六进制
80/16 = 5 余 0
5/16 = 0 5
十六进制的值是 0x50
二进制
80/2 = 40 0
40/2 = 20 0
20/2 = 10 0
10/2 = 5 0
5/2 = 2 1
2/2 = 1 0
1/2 = 0 1
二进制的值是 0b1010000
80/2 = 40 0
40/2 = 20 0
20/2 = 10 0
10/2 = 5 0
5/2 = 2 1
2/2 = 1 0
1/2 = 0 1
二进制的值是 0b1010000
(2)计算出075对应的十六进制和二进制的值
先算出八进制075对应的十进制的值
75=70 + 5
=7 * 8^1 +5 * 8^0
=56 + 5
=61
十进制的值是61
先算出八进制075对应的十进制的值
75=70 + 5
=7 * 8^1 +5 * 8^0
=56 + 5
=61
十进制的值是61
在由十进制计算出十六进制和二进制
十六进制
61/16 = 3 余 13
3/16 = 0 3
十六进制的值是 0x3d
十六进制
61/16 = 3 余 13
3/16 = 0 3
十六进制的值是 0x3d
二进制
61/2 = 30 余 1
30/2 = 15 0
15/2 = 7 1
7/2 = 3 1
3/2 = 1 1
1/2 = 0 1
二进制的值是 0b111101
61/2 = 30 余 1
30/2 = 15 0
15/2 = 7 1
7/2 = 3 1
3/2 = 1 1
1/2 = 0 1
二进制的值是 0b111101
(3)计算出0xFA对应的十进制、八进制和二进制的值
十进制
FA=F * 16^1 + A*16^0
=240 + 10
=250
十进制的值是 250
八进制
250/8 = 31 2
31/8 = 3 7
3/8 = 0 3
八进制的值是 0372
250/8 = 31 2
31/8 = 3 7
3/8 = 0 3
八进制的值是 0372
二进制
250/2 = 125 0
125/2 = 62 1
62/2 = 31 0
31/2 = 15 1
15/2 = 7 1
7/2 = 3 1
3/2 = 1 1
1/2 = 0 1
二进制的值是 0b11111010
250/2 = 125 0
125/2 = 62 1
62/2 = 31 0
31/2 = 15 1
15/2 = 7 1
7/2 = 3 1
3/2 = 1 1
1/2 = 0 1
二进制的值是 0b11111010
(4)计算出0b10110110的十进制、十六进制、八进制
十进制
10110110 = 128 + 32 + 16 + 4 + 2
= 182
十进制的值是 182
十进制
10110110 = 128 + 32 + 16 + 4 + 2
= 182
十进制的值是 182
十六进制
182/16 = 11 余 6
11/16 = 0 11
16进制的值是 0xb6
182/16 = 11 余 6
11/16 = 0 11
16进制的值是 0xb6
八进制
182/8 = 22 6
22/8 = 2 6
2/8 = 0 2
八进制的值是 0266
182/8 = 22 6
22/8 = 2 6
2/8 = 0 2
八进制的值是 0266
3.什么是变量?变量的定义格式?要使用变量需要注意什么?
在程序运行过程中会改变的量为变量
变量的定义格式:数据类型 变量名 = 初始值;
数据类型 变量名;
变量名 = 初始值;
注意事项:1.同一个作用域中变量名不能重复
2.使用变量前必须赋值
4.Java中的数据类型分几类?基本数据类型有哪些?
数据类型分4类,分别是整数
byte
short
int
long
浮点
float
double
字符
char
布尔
boolean
在程序运行过程中会改变的量为变量
变量的定义格式:数据类型 变量名 = 初始值;
数据类型 变量名;
变量名 = 初始值;
注意事项:1.同一个作用域中变量名不能重复
2.使用变量前必须赋值
4.Java中的数据类型分几类?基本数据类型有哪些?
数据类型分4类,分别是整数
byte
short
int
long
浮点
float
double
字符
char
布尔
boolean
5.数据类型转换:
隐式转换:两种数据类型在运算时,会把范围小的自动提升到范围大的在运算。
隐式转换:两种数据类型在运算时,会把范围小的自动提升到范围大的在运算。
强制转换:两种数据类型在运算时,会把范围小的自动提升到范围大的在运算;之后在将值赋予范围小的数据类型。
格式是: byte b = (byte)(2 + 1);
格式是: byte b = (byte)(2 + 1);
面试题:
第一题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
b=b1+b2会编译失败,因为定义的b1、b2、b的数据类型都是byte,b1+b2运算时会隐式转换为int数据类型运算,在赋值给byte数据类型会损失精度
第二题:
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
有问题,130超过了byte数据类型的范围;
进行强制转换 byte by = (byte)130;
结果值是-126
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
有问题,130超过了byte数据类型的范围;
进行强制转换 byte by = (byte)130;
结果值是-126
第三题:
byte b = 10;
b++;
b = b + 1;
哪句是编译失败的呢?为什么呢?
b = b +1会编译失败,b +1运算时会隐式转换为int数据类型运算,在赋值给byte数据类型会损失精度
b++在运算过程中会进行强制转换
6.常见的算术运算符有哪些? + - * / % ++ --
(1)+运算符的作用有哪些?
1.作为正号;2.作为加法运算符;3.用于字符连接
(2)除法和取余的区别?
除法是整数除以整数得整数的值,余数舍掉
取余是整数除以整数得余数
(3)++和--的使用规则?
符号放在前面时,先运算在赋值
符号放在后面时,先赋值在运算
会强制转型
byte b = 10;
b++;
b = b + 1;
哪句是编译失败的呢?为什么呢?
b = b +1会编译失败,b +1运算时会隐式转换为int数据类型运算,在赋值给byte数据类型会损失精度
b++在运算过程中会进行强制转换
6.常见的算术运算符有哪些? + - * / % ++ --
(1)+运算符的作用有哪些?
1.作为正号;2.作为加法运算符;3.用于字符连接
(2)除法和取余的区别?
除法是整数除以整数得整数的值,余数舍掉
取余是整数除以整数得余数
(3)++和--的使用规则?
符号放在前面时,先运算在赋值
符号放在后面时,先赋值在运算
会强制转型
7.常见的赋值运算符有哪些? = += -= *= /=
(1)+=运算的作用是什么? +=运算符两边的数据相加的值赋予左边
(2)扩展的赋值运算符有什么特点?
会强制转型
(1)+=运算的作用是什么? +=运算符两边的数据相加的值赋予左边
(2)扩展的赋值运算符有什么特点?
会强制转型
8. short s = 1; s = s + 1;有没有问题?如果有怎么解决?
有问题,编译时会报错,损失精度,加上强制转换,s = (short)(s + 1)
short s = 1; s += 1;有没有问题?如果有怎么解决?
没问题
9.常见的关系运算符有哪些? > < >= <= == !=
关系运算符的结果有什么特点?
只有2个值真或假,及 true 或 false
有问题,编译时会报错,损失精度,加上强制转换,s = (short)(s + 1)
short s = 1; s += 1;有没有问题?如果有怎么解决?
没问题
9.常见的关系运算符有哪些? > < >= <= == !=
关系运算符的结果有什么特点?
只有2个值真或假,及 true 或 false
11.分析以下需求,并用代码实现:
(1)已知一个三位数,请分别获取该三位数上每一位的数值
(2)例如:123的个位、十位、百位,分别是3、2、1
(3)打印格式"数字123的个位是 3, 十位是 2, 百位是 1"
(1)已知一个三位数,请分别获取该三位数上每一位的数值
(2)例如:123的个位、十位、百位,分别是3、2、1
(3)打印格式"数字123的个位是 3, 十位是 2, 百位是 1"
class Demo1 {
public static void main(String[] args) {
int a ,b ,c;
int d = 123;
a = d / 100 % 10;
b = d / 10 % 10;
c = d % 10;
/*
System.out.println(a);
System.out.println(b);
System.out.println(c);
*/
System.out.println("数字123的个位是 " + c + ", 十位是 " + b + ", 百位是 " + a);
}
}
public static void main(String[] args) {
int a ,b ,c;
int d = 123;
a = d / 100 % 10;
b = d / 10 % 10;
c = d % 10;
/*
System.out.println(a);
System.out.println(b);
System.out.println(c);
*/
System.out.println("数字123的个位是 " + c + ", 十位是 " + b + ", 百位是 " + a);
}
}
12.看程序说结果,请不要提前运行?
public class Test1 {
public static void main(String[] args) {
int x = 4;
int y = (--x)+(x--)+(x*10);
System.out.println("x = " + x + ",y = " + y);
}
}
x = 2
y = 3 + 3 + 2*10
= 26