进制介绍:

image-20220727193418299

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//        二进制
int n1 = 0b1010;
// n2 10 进制
int n2 =1010;
// n3 8进制
int n3= 01010;
// 16进制
int n4 =0x10101;
System.out.println("n1="+n1);//10
System.out.println("n2="+n2);//1010
System.out.println("n3="+n3);//520
System.out.println("n4="+n4);//65793


image-20220727193725958

image-20220727193734857

进制的转换:

第一组:

二进制转十进制

image-20220727194438039

2.八进制转十进制

image-20220727194606923


image-20220727194743486

第二组:
1.十进制转二进制

image-20220727230259620

2.十进制转八进制

image-20220727230415700

3.十进制转十六进制

image-20220727230520692

第三组
1.二进制转八进制

image-20220727230824610

2.二进制转十六进制

image-20220727231107555第四组
1.八进制转二进制

image-20220727231302515

image-20220727231331744

2.十六进制转二进制

image-20220727231657771

位运算

1.二进制是逢2进位的进位制,0、1是基本算符。
2现代的电子计算机技术全部采用的是二进制,因为它只使用0、1两个数字符号,
非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary) 数用0和1两个数字及其组合来表示任何数。进位规则是”逢2进1”,数字1在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

原码、反码、补码(重点):

1.二进制的最高位是符号位: 0表示正数,1表示负数(口诀: 0->0 1->-)(记忆:1转换90为- 负数)

2.正数的原码,反码,补码都一样(三码合一)
3.负数的反码=它的原码 符号位不变,其它位取反(0->1,1->0)
4.负数的补码=它的反码+1,负数的反码= 负数的补码-1

5.0的反码,补码都是0

6.java没有无符号数,换言之, java中的数都是有符号的

7.在计算机运算的时候,都是以补码的方式来运算的(首先要转换补码进行运算

补码= 原码取反+1

8.当我们看运算结果的时候,要看他的原码

image-20220727233639481

进行运算只能是补码

  1. 首先将数值转换为二进制,添加符号位(0正 1负)
  2. 转换为反码(正数不变,负数 符号位不变,取反)
  3. 求补码(正数不变,负数=反码+1))
  4. 进行运算
  5. 运算完之后判断正负(正数不用管,负数需要补码转原码)负数补码转原码(补转反(补码-1=反),反转原(符号位不变,其他位取反))

image-20220727234554163

image-20220727235233749

image-20220728000808883

位运算符:

image-20220728001051097

image-20220728001524406

image-20220728001921234

image-20220728001748164

什么是移位运算 - 腾讯云开发者社区-腾讯云 (tencent.com)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

public static void main(String[] args) {
// 二进制
int n1 = 0b1010;
// n2 10 进制
int n2 =1010;
// n3 8进制
int n3= 01010;
// 16进制
int n4 =0x10101;
System.out.println("n1="+n1);
System.out.println("n2="+n2);
System.out.println("n3="+n3);
System.out.println("n4="+n4);


int a=1>>2;//右移两位
int b=-1>>2;
int c=1<<2;
int d = -1<<2;
int e = 3>>>2;//算数右移

System.out.println("a="+a);
System.out.println("b="+b);

System.out.println("c="+c);

System.out.println("d="+d);

System.out.println("e="+e);

System.out.println("~2="+(~2));//按位取反
System.out.println("~-2="+(~-2));//按位取反

System.out.println("2&3="+(2&3));//2按位与3
System.out.println("2|3="+(2|3));//2按位或3

System.out.println("-3^3="+(-3^3));//按位异或


}

image-20220728000928019