Java运算符 + 十、二、八、十六进制之间的转换 + 源码、反码、补码

Java运算符

按照操作数的数目进行划分

单目 a++
双目 a+b
三目 (a>b)?x:y

按照运算符功能进行划分

算数运算

+、 -、 *、 /:加、减、乘、除
%:取余、取模
++:自增 (放在变量前面先加后用;放在变量后面先用后加)
–:自减

赋值运算

=:将等号右边的值赋值给等号左边
+=、-=、*=、/=、%=:加等、减等、乘等、除等、取模等
x+=1;相当于x=x+1;

关系运算(比较)

<、<=、>、>=、!=、==

逻辑运算

逻辑运算前后连接的两个都是boolean类型

  • &逻辑与 :两个都为true,结果为true
  • |逻辑或 :有一个为true,结果为true
  • ^逻辑异或 :两个相反,结果为true
  • !逻辑非:false的非是true
  • &&短路与:两个数里第一个数为false,后面的就不用执行:和&得到的结果都为false
  • ||短路或:两个数里第一个数为true,后面的就不用执行:和|得到的结果都为true
位(bit)运算

对二进制中每一个bit进行操作

1、先将十进制数转换成二进制数
2、按照位置进行运算(1–>true,0–>false)
3、将二进制结果转化成十进制

  • 按位与(&)
十进制 二进制
1 00000001
2 00000010
1&2==0 00000000
  • 按位或(|)
十进制 二进制
1 00000001
2 00000010
1按位或2==3 00000011
  • 按位异或(^)
十进制 二进制
1 00000001
2 00000010
1^2 00000011
  • 按位取反(~)

二进制中每一个bit位都0变1,1变0

  • 按位左位移(<<)

末位补0
相当于乘以2的位移次幂

十进制 二进制
6 00000000 00000000 00000000 00000110
6<<1 00000000 00000000 00000000 00001100
  • 按位右位移(>>)

末尾移除
相当于除以2的位移次幂
保留符号位,原来是1就写1,原来是0就写0

十进制 二进制
6 00000000 00000000 00000000 00000110
6>>1 00000000 00000000 00000000 00000011
  • 按位右位移(>>>):无符号

位移之后不保留符号,原来不管是什么都补0

十、二、八、十六进制之间的转换

十进制0123456789

二进制01

十进制---->二进制:十进制数除以2取余数,将余数倒叙排列

二进制---->十进制:从右至左边,每一个bit位乘以2的位置次幂,加和

八进制01234567

每三个二进制的bit位记录为一组,求出每组的十进制,表示形式以0开头

十六进制0123456789ABCDEF

每四个二进制的bit位记录为一组,求出每组的十进制,表示形式以0X开头

源码、反码、补码

正数
源码、反码、补码是一样的

十进制:6 二进制
原码 00000000 00000000 00000000 00000110
反码 00000000 00000000 00000000 00000110
补码 00000000 00000000 00000000 00000110

负数
原码:要将符号位置改为1
反码:保持符号位不动,按照原码按位取反
补码:在反码的基础上加1

十进制:-6 二进制
原码 10000000 00000000 00000000 00000110
反码 11111111 11111111 11111111 11111001
补码 11111111 11111111 11111111 11111010

注意:计算机中都是以补码的形式存储的

猜你喜欢

转载自blog.csdn.net/weixin_42316524/article/details/106303986