第一阶段第四章运算符
第四章
算数运算符
运算代码:
public class ArithmeticOperators{ public static void main(String[] args){ int i = 10/4;//数学中得2.5 java中得2 double d = 10/4;//int->double 寰 2.0 //int i2 = 10.0/4; //把double->int 错误 double d2 = 10.0/4; //寰2.5 System.out.println(i); System.out.println(d); System.out.println(d2); //余数公式a/b = a - a/b*b int i2 = 10%3;//1 int i3 = -10%3;//-1 int i4 = 10%-3;//1 int i5 = 5; int j =i5++;//先赋值后运算 j=i5;i5=i5+1; System.out.println(j);//5 System.out.println(i5);//6 int j2 =++i5;//先运算后赋值i5=i5+1;j2=i5 System.out.println(j2);//7 System.out.println(i5);//7 } }
课堂练习
public class Test1{ public static void main(String[] args){ //题目一 int i = 59; int week = 7; int week1 = i/week; int day = i%week; System.out.println("一共有:"+week1+"周"+day+"天"); //题目二 double d = 234.5; //double d1 = 5/9*(234.5-100);//bug 5/9在java中得0 double d1 = 5.0/9*(234.5-100); System.out.println("摄氏温度:"+d1); } }
逻辑运算
逻辑与和短路与的区别,逻辑或和短路或的区别
public class LogicalOperation{ public static void main(String[] args){ //&&(短路与)当前面的判断为假时后面不会判断 //&(逻辑与)当前面的判断为假时后面仍然判断 //|和||同理 int a = 20; int b = 80; if(a < 10 && ++b > 50){ System.out.println("true"); } System.out.println("a=" + a + " " + "b=" + b);//a<10为假不会判断 ++b>50, 所以 a=20,b=80; if(a < 10 & ++b > 50){ System.out.println("true"); } System.out.println("a=" + a + " " + "b=" + b);//a<10为假但仍判断 ++b>50; 所以 a=20,b=81; } }
三元运算符
键盘输入语句
import java.util.Scanner;//表示使用 java.util这个包下的Scanner这个类 public class Input{ public static void main(String[] args){ //创建Scanner这个类的对象 Scanner scanner = new Scanner(System.in); System.out.println("请输入名字:"); String name = scanner.next();//接收用户输入的字符串 System.out.println("请输入年龄:"); int age = scanner.nextInt();//接收用户输入的整数 System.out.println("请输入薪水:"); double Salary = scanner.nextDouble(); System.out.println("该用户的名字是:" + name + " " + "该用户的年龄是:" + age + " " + "该用户的薪水是:" + Salary); } }
进制
二进制转十进制
八进制转十进制
十六进制转十进制
十进制转二进制
注意一个字节是八位如果位数不够需向高位补0 ,一个二进制占八个字节
十进制转八进制
十六进制转10进制
二进制转八进制
注:111是7 第一个1是1 第二个1是2第三个1是八所以加起来是7刚好构成一个八进制
二进制转十六进制
1111刚好组成一个十六进制所以每四位一组
八进制和十六进制转二进制
注;0X23B B=1111-4 = 1011 1111是15
源码,反码,补码(重点)
位运算
练习1
练习二
public class BitArithmetic{ public static void main(String[] args){ //思路 一,计算机内任何运算都是以补码计算,但是呈现给我们看的是源码 //二,2的补码:先将2转换成二进制得到源码,因为正数三码合一 //所以2的补码:00000000 00000000 00000000 00000010 因为2是int类型占4个字节,一个字节占8个bit //3的补码同理:00000000 00000000 00000000 00000011 //三,&运算:得到2&3的补码:00000000 00000000 00000000 00000010 &:两位中同时是1才得1,反之得0 //四,计算机将补码转换成源码呈现给我们 //2&3的源码:因为正数三码合一所以源码就是补码 System.out.println(2&3);//2 //-2的补码: 负数的补码=反码+1,源码变反码符号位不变其余取反; //-2的源码:10000000 00000000 00000000 00000010 注:最高位1代表负号 0代表正号 //-2的反码:11111111 11111111 11111111 11111101 //所以-2的补码:11111111 11111111 11111111 11111110 //~-2:1->0,0->1得 00000000 00000000 00000000 00000001//正数 System.out.println(~-2);//1 //2的补码:00000000 00000000 00000000 00000010 //3的补码:00000000 00000000 00000000 00000011 //2|3的补码: 两位中有一个为1就得1,两个都为0才得0; 00000000 00000000 00000000 00000011 //2|3的源码:00000000 00000000 00000000 00000011//正数 System.out.println(2|3);//3 //-5的源码:10000000 00000000 00000000 000000101 //-5的反码:11111111 11111111 11111111 111111010 //-5的补码;11111111 11111111 11111111 111111011 //~-5的补码:00000000 00000000 00000000 00000100//最高位为0正数 //~-5的源码:00000000 00000000 00000000 00000100 System.out.println(~-5);//4 //13的补码:00000000 000000000 00000000 00001101 //7的补码:00000000 00000000 00000000 00000111 //13&7的补码;00000000 00000000 00000000 00000101 //13&7的源码:00000000 00000000 00000000 00000101 System.out.println(13&7);//5 //-3的源码:10000000 00000000 00000000 00000011 //-3的反码:11111111 11111111 11111111 11111100 //-3的补码:11111111 11111111 11111111 11111101 //3的补码: 00000000 00000000 00000000 000000011 //-3^3的补码 两个中不相同才为1,反正为0 11111111 11111111 11111111 11111110 //补码-1得反码 //-3^3的反码:11111111 111111111 11111111 11111101 //-3^3的源码:10000000 000000000 00000000 00000010 System.out.println(-3^3);//-2 } }
位运算
本章作业