手记

《二进制基础》总结

8进制:标志的开头用0表示(这是数字0)
16进制:标志的开头用0x表示(这是数字0加字母x)

十进制转换为x进制的方法:
十进制短除x,将余数从下往上写出则为转换后的x进制数

---------二进制的位运算---------
&:与运算 6&3=2
|:或运算 6|3=7
^:异或运算 6^3=5
~:反码 ~6=-7
<<:左移 3<<2=12 322=12

:右移 3>>1=1 3/2=1

:无符号右移 3>>>1=1 3/2=1

二进制优点:
特定情况下,计算方便,速度快,支持面广
如果用算数方法,速度慢,逻辑复杂

(1)按位与&:两位全为1,结果才为1
与运算的特殊用法
1清零:如果想将一个单元清0,即使其全部二进制位为0,只要与一个各位都为0的数值相与,结果为0。
2取一个数中指定位:要一个X数的指定位,只要取一个数,该数的对应指定位位为1,此数与X数进行“与运算”可以得到X中的指定位。
(2)按位或|:只要有一个为1,结果就为1
或运算的特殊用法
1常用来对一个数据的某些位置1:找到一个数,对应X要置1的位,该数的对应位为1,其余位为0。此数与X相或可使X中的某些位置1
(3)异或运算^:两个相应位为“异”(值不同),则该位结果为1,否则为0
异或运算的特殊用途
1使特定位翻转:找一个数,对应X要翻转的各位,该数的对应位为1,其余为0,此数与X对应位异或即可。
2与0相异或,保留原值
两个变量交换值的方法
1借助第三个变量来实现
C=A;A=B;B=C;
2利用加减法来实现两个变量的交换
A=A+B;B=A-B;A=A-B;
3用位异或运算来实现,也是效率最高
原理:利用一个数异或本身等于0和异或运算符合交换率
A=A^B;B=A^B;A=A^B
(4)取反运算~:对一个二进制数按位取反,即将0变1,1变0
(5)左移运算<<:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)
2<<1=4;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2
-14(11110010)<<2=(11001000)不符合
11(1011)<<2=44 符合
因为省略了11(00000000 00000000 00000000 1011)(32位)
(6)右移运算>>:将一个数的各二进制位全部右移若干味,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2。
1=4>>2
-14(11110010)>>2=
-4(11111100)
(7)无符号右移运算>>>
各个位向右移指定的位数。右移后左边空出的位用0来填充。移出右边的位被丢弃
-14>>>2
即-14(11111111 11111111 11111111 11110010)>>>2
=(00111111 11111111 11111111 11111100)
=1073741820

负数以其正值的补码形式表示
原码:一个整数按照绝对值大小转换成二进制数称为原码
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码
补码:反码加1称为补码
-14(11111111 11111111 11111111 11110010)<<2
=(11111111 11111111 11111111 11001000)
=?
分析:只需要该补码的原码对应的正值,然后取相反数
1补码减1得到反码:(11000111)
2补码取反得到原码(该负数的正值)(00111000)(前24位为0,此处省略)
3计算正值(正值为56)
4取相反数:结果为-56

--------- JDK内置的进制转换---------

--------- java中的进制---------

小端法:低位字节排放在内存的低地址端为该值的起始地址,高位字节排放在内存的高地址端
大端法:高位字节排放在内存的低地址端为该值的起始地址,低位字节排放在内存的高地址

1人推荐
随时随地看视频
慕课网APP