-63(10)= - 011 1111 = 11000001(补)=c1
-4(10)=- 000 0100 = 11111100(补)=fc
byte b = (byte)0xfc;
-63 11000001
* -4 11111100
-----------------------------------------
00000000
00000000
11000001
11000001
11000001
11000001
11000001
11000001
-----------------------------------------
11111100 -4
127 +1 = 01111111 + 1 = 10000000 = -128
数学运算
1 同种类型参与运算,得到同种类型结果
2 小于32位数据按照32位int运算
3 Java不检查向上向下溢出问题!
4 整数除法是整除
取余(取模) %
3%2 -> 1
0%5 -> 0
3%5 -> 3
-1%5 -> -1
赋值运算
1 赋值运算是表达式
2 赋值表达式是有结果的,是那个赋值的结果
3 不建议使用晦涩难懂的表达式。
int a = 4;
a*=4 <=> a = a * 4;
int b = 2*(a*=4);
关于书
Java编程思想 Think in Java
Java核心技术 CoreJava
++ --
1 i++ 后++:先取i的值作为整个表达式的值,然后+1;
2 ++i 先++:先i+1, 然后取i的值作为整个表达式的值
int a = 2;
int b = a++;
b = ++a;
a=a++;
条件表达式:
int rows = 28;
int size = 10;
int pages = rows%size==0 ?
rows/size : rows/size+1;
位运算:
& 按位与 1&1 = 1, 0&1 = 0, 1&0=0 0&0=0
| 按位或 1|1 = 1, 0|1 = 1, 1|0=1 0|0=0
~ 取反
int i = ~-1;
<< 左移位 00000010 << 3 00010000
int i = 2;
int n = i<<3; // n=i*2*2*2;
数学右移(保持符号位不变)
>> 00000010 >> 1 00000001
11111101 >> 1 11111110
无符号移位,高位永远填0
>>> 11111101 >>> 1 01111110
int i = -1;
i = i >> 1;//-1
i = i>>>1; // 最大值
从控制台读取字符:
Scanner console = new Scanner(System.in);
String str = console.nextLine();
char c1 = str.charAt(0);
char c2 = str.charAt(1);
掩码运算是一种特殊的取余运算
i & 0xf -> i%16
i & 7 -> i%8
i & 3 -> i%4
i & 1 -> i%2
//&& || 运算是短路运算, 常用的
int a = 1;
//短路运算,第一个表达式是false,第二个不再运行
boolean b = a!=1 && a++ == 2;
b = a==1 || a++==2;
System.out.println(a);
// & | 是非短路运算
//非短路运算,即使第一个表达式是false,
// 第二个也运行
b = a!=1 & a++ == 2;
b = a==1 | a++ == 2;
System.out.println(a);
作业:
1 复习课堂代码,添加输出语句输出变量的值。
2 实现拆分颜色功能:
如: 0xffffff -> 255 255 255
0xB29D5A -> 178 157 90
3 实现从控制台输入 两个中文,拼接成一个整数
然后再拆分输出
4 实现从控制台输入 4个英文,拼接成一个整数
然后再拆分输出
5 实现华氏度<->摄氏度转换
c = 5(f-32)/9
f = 9c/5+32
如:27C -> 81F, 96F->36C
要求:从控制台输入华氏或者摄氏温度,输出转换结果
转换结果要求四舍五入