java运算符中基本运算符运用比较多,加减乘除,&,||等运算符结合基础变量,还有一种运算符平时使用不多但是在数据结构源码和字节码使用比较多的场景中使用比较多,按位运算,现整理如下:
- 进制计算:数字表达一种方式,生活中常用皆是10进制,计算机表达数字或者变量则是通过二进制,其他常用还有16进制,涉及到的就是进制之间的换算。
- 十进制到其他进制的换算:十进制数和其他进制求余,最后的值和余数值倒着串联起来就是换算后的进制数。比如十进制数16转换为2进制是10000,转换为16进制是10
- 其他进制到十进制的换算:按位换算进制的位置减一次幂最终的和即为十进制数,比如二进制数10000=124+0*23+02^2+021+0*20 = 16+0+0+0+0 = 16,十进制 10= 116^1+016^0=16+0=16.
- ^:按位异或运算,数字二进制标示 从高位到低位依次比较相同为0 不同为1比如16^8计算如下:
- 16=10000,8=1000=01000则16^8=11000=24
- &:按位与运算,数字二进制表示,从高位到低位依次比较都为1则为1有一个不为1则为0比如:16&8计算如下:
- 16&8 = 10000&01000 = 00000 = 0
- |:按位或运算,数字二进制表示,从高位到低位依次比较有1则为1,无1则为0,比如16|8为:
- 16|8 = 10000|01000 = 11000 = 24
-
:按位非运算,即将数字二进制表示后翻转,位1则为0,位0则为1,即16为:
- ~16 = ~10000 = 01111 = 15
- <<:左移运算:数字按照二进制表示后,左移多少位后面补0,比如16<<2为:
- 16<<2=10000<<2=1000000 = 12^6 = 64 = 162^2 = 64.
- 由上可知按位左移就是当前数乘以2的移动数次幂,16左移2位=16*2^2 = 64.
- //>>:右移运算“数字按照二进制表示后,向右移指定位数,然后前面补0,比如16>>2为:
- 16>>2=10000>>2 = 00100 = 4 = 16/2^2 = 4
- 由上可知按位右移运算就是当前数除以2的移动位数次幂。
綜上可知: - 按位运算包括:与,或,异或,非,左移,右移几种运算。
- 左移,右移看运算符箭头朝向,朝向那边则是那移,左移相当于乘以2的移动位数次幂,右移相当于除以2的移动位数次幂。
- ///>>>(前面转义)和<<<是无符号移动,和上面移动相似,区别是移动后的填充不一样,正常移动填充的是符号位,无符号是不考虑符号位移动后直接填充0.java中的最左边一位是符号位。
- 与运算都为1则为1,或运算有1则为1,异或运算同时为1才为1,非运算是1则为0.
网友评论