目录
进制转换
转换十进制
十进制转换
二进制转换
转换二进制
位运算
原码_反码_补码
口诀 --重点
按位与& 按位或| 按位异或^ 按位取反~
实例
进制转换
转换十进制
二进制转十进制 : 从最低位(右边),讲每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
八进制转十进制 : 从最低位(右边)开始,讲每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
十六进制转十进制 : 从最低位(右边),讲每个位上的数提取出来,乘以16的(位数-1)次方,然后求和
0b110_001_100 = 0 + 0 + 4 + 8 + 0 + 0 + 128 + 256 = 396
02_456 = 6 + 40 + 256 + 1024 = 1326
0xA45 = `5 + 64 + 2560 = 2629
十进制转换
十进制转二进制 : 将该数不断除以2,直到商为0为止,然后将每部得到的余数倒过来,就是对应的二进制
十进制转八进制 : 将该数不断除以8,直到商为0为止,然后将每部得到的余数倒过来,就是对应的二进制
十进制转十六进制 : 将该数不断除以16,直到商为0为止,然后将每部得到的余数倒过来,就是对应的二进制
34 = [34/2] {0} [17/2] {1} [8/2] {0} [4/2] {0} [2/2] {0} {1} = 0_b00_100_010
131 = [131/8] {3} [16] {0} {2} = 0203
237 = [237/16] {13}{D} {14}{E} = 0xED
123 = [123/2] {1} [61/2] {1} [30/2] {0} [15/2] {1} [7/2] {1} [3/2]{1} [1]{1} = 0111 1011
678 = [678/8] {6} [84/8] {4} [10/8] {2} = 1246
8912 = [8912/16] {0} [557/16] {13} [34/16] {2} {2} = 0x22D0
二进制转换
二进制转八进制 : 将二进制的每三位一组,转成对应的八进制数即可
二进制转十六进制 : 从低位开始,将二进制数每四位一组,转成对应的十六进制数即可.
o_b11_010_101 = {3} {2} {5} = 0325
ob_1101_0101 = 0xD5
0b 011100101 = 0345
0b_001110010110 = 0x396
转换二进制
八进制转二进制 : 将八进制数的每一位,转成对应的一个三位的二进制数即可
十六进制转二进制 : 将十六禁止的每一位,转成对应的一个四位的二进制数即可
0237 = {10}{11}{111} = 1001 1111
0x23B = {0010}{0011}{1011}
01230 = 0010 1001 1000
0xAB29 = 1010 1011 0010 1001
位运算
算术右移 >> :低位溢出,符号位不变,并且利用符号位补溢出高位 本质 a / 2(n个)
算数左移 >> :符号位不变,低位补0 本质 a * 2(n个)
>>> 逻辑右移 也叫做无符号右移,运算规则是:低位溢出,高位补0
原码_反码_补码
口诀 --重点
1.二进制的最高位是符号位:0标识正数,1表示负数(口诀 0 -> 0 1 -> -)
2.正数原码,反码,补码都一样(三码和一)
3.负数的反码=它的原码符号位不变,其它位取反(0 ->1 , 1 -> 0)
4.负数的补码=它的反码+1,负数的反码 = 负数的补码 -1
5.0的反码,补码都是0
6.java没有无符号数,换言之,java中的数都是有运算符号的
7.在计算机运算的时候,都是以补码的方式来运算的
8.当我们看运算结果的时候,要看它的原码
补码运算,结果原码
按位与& 按位或| 按位异或^ 按位取反~
运算规则:
按位与&: 两位全为1,结果1,否则0
按位或|: 两位有一个为1,结果为1,否则为0
按位异或^: 两位一个为0,一个为1,结果为1,否则为0
按位取反~: 0 -> 1, 1-> 0
实例
//2|3
// 2 补码 00000000 00000000 00000000 000000010
// 3 补码 00000000 00000000 00000000 000000011
// | 00000000 00000000 00000000 00000011 正数的补码就是原码
//3
System.out.println(2|3);
//2^3
//2 补码 00000000 00000000 00000000 000000010
//3 补码 00000000 00000000 00000000 000000011
//^ 00000000 00000000 00000000 00000001
//1
System.out.println(2^3);
System.out.println(~-5);
System.out.println(13&7);
System.out.println(5|4);
System.out.println(-3^3);



