这是我参与2022首次更文挑战的第3天,活动详情查看:2022首次更文挑战 | 创作学习持续成长,夺宝闯关赢大奖 - 掘金 (juejin.cn)
6.进制
-
对于整数,有四种表示方式:
-
二进制(binary):0,1 满二进一,以0b或0B开头
-
十进制(decimal):0-9 满十进一
-
八进制(octal):0-7 满八进一,以数字0开头
-
十六进制(hex):0-9及A-F 满十六进一,以0x或0X开头表示,A-F不区分大小写
class Binary{ public static void main(String[] args){ int num1 = 0b110; int num2 = 110; int num3 = 0127; int num4 = 0x110A; System.out.println("num1 = "+num1);//6 System.out.println("num2 = "+num2);//110 System.out.println("num3 = "+num3);//87 System.out.println("num4 = "+num4);//4362 } }
(1)二进制转十进制
2^0+2^1+2^2+2^3+2^4+2^5+2^6=127
(2)十进制转二进制
除二取余的逆
除2取余的逆
(3)负数的二进制表示
- 原码:直接将一个数值换成二进制数。最高位是符号位
- 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
- 负数的补码:其反码加1。
- 正数:原码、反码、补码相同的。
(3)进制间转化
以二进制为媒介
(三)运算符
1.算数运算符
/*
算术运算符:+ - * / % ++ ++ -- --
*/
class AriTest{
public static void main(String[] args){
//除号 /
int num1 = 12;
int num2 = 5;
int result1 = num1/num2;
System.out.println(result1);//2
int result2 = num1/num2*num2;
System.out.println(result2);//10
double result3 = num1/num2;
System.out.println(result3);//2.0
double result4 = (double)num1/num2;//2.4
System.out.println(result4);
double result5 = num1 / num2 + 0.0;//2.0
double result6 = num1 / (num2 + 0.0);//2.4
double result7 = 1.0 * num1 / num2;//2.4
//%取余运算
//结果的符号与被模数的符号相同
//开发中常用来判断能否除尽
int m1 = 12;
int n1 = 5;
System.out.println(m1%n1);
int m2 = -12;
int n2 = 5;
System.out.println(m2%n2);
int m3 = 12;
int n3 = -5;
System.out.println(m3%n3);
int m4 = -12;
int n4 = -5;
System.out.println(m4%n4);
//(前)++,先自增,再运算
//(后)++,先运算,再自增
int a1 = 10;
int b1 = ++a1;
System.out.println("a1 = " + a1 + ",b1 = " + b1);
int a2 = 10;
int b2 = a2++;
System.out.println("a2 = " + a2 + ",b2 = " + b2);
//注意点:
short s1 = 10;
//s1 = s1 + 1;//编译失败
s1 = (short)(s1 + 1);//方法一
s1++;//方法二
//自增自减不会改变变量本身的数据类型
byte b3 = 127;
b3++;
System.out.println("b3 = " + b3);//二进制
//(前)--,先自减,再运算
//(后)--,先运算,再自减
int a4 = 10;
//int b4 = --a4;
int b4 = a4--;
System.out.println("a4 = " + a4 + ",b4 = " + b4);
}
}
2.赋值运算符
/*
运算符二:赋值运算符
= += -= *= /= %=
*/
class SetValue{
public static void main(String[] args){
//赋值符号
int i1=10;
int j1=10;
//连续赋值
int i2,j2;
i2=j2=10;
int i3=10,j3=20;
//*********************
int num1 = 10;
num1 += 2;//num = num + 2;
System.out.println(num1);//12
int num2 = 12;
num2 %= 5;//num2 = num2 % 5;
System.out.println(num2);
//区别
short s1 = 10;
//s1 = s1 + 2;//编译失败
s1 += 1;
System.out.println(s1);//不会改变变量本身的数据类型
//开发中希望实现+2的操作有几种方法(前提:int num = 10)
//1.num = num + 2;
//2.num += 2;//(推荐)
//开发中希望实现+1的操作有几种方法(前提:int num = 10)
//1.num = num + 1;
//2.num += 1;
//3.num++;//(推荐)
}
}
3.比较运算符
/*
运算符三:比较运算符
== != > < >= <= instanceof
结论:
1.比较运算符的结果是boolean类型
2.区分==与=
*/
class CompareTest{
public static void main(String[] args){
int i=10;
int j=20;
System.out.println(i==j);//false
System.out.println(i=j);//20
boolean b1=true;
boolean b2=false;
System.out.println(b2==b1);//false
System.out.println(b2=b1);//true
}
}