java运算符 (java运算符优先级由高到低)
java运算符 (java运算符优先级由高到低)
==!=不考虑
既是位运算符又是逻辑运算符,的两侧可以是int,也可以是boolean表达式
必须是boolean表达式
运算数值比如125(11运算才为1)
1100 ===〉12
0101===》 5
00,1,0结果是0,只有11结果是1
0100===〉4
||
|运算数值12|5(11.10运算都是1)
只要含有1即运算结果1
1101===13
^运算符
按位异或运算符(^)是二元运算符,要化为二进制才能进行计算,在两个操作数中,如果两个相应的位相同,则运算结果为0 否则取1
2^3(1,0运算为1
0000 0010=====〉2
0000 0011 ======〉3
异或0000 0001 ====〉1
================================================
(保留符号
祛除末尾移动的几个数,可以圈住未移动的,在前面填上几个0(祛除的个数),符号位移动到最高位,,然后原高位补0如图
表示左移,不分正负数,低位补0; (符号和原来的一样)低位补0,移动几位低位补几个0
如图
无符号右移 (用于32,64位)
右移运算与类似正数的运算结果是一样的
对于负数,机器是用补码进行运算
链接:
问个简单的问题3-8为什么等于-5?
原因:首先不足我们用-号表示,3-8明显没办法减,这时候用负数的概念表达,然后用大数减去小数得出小数离大数差多少也就是-5的来源
============================================
-202======5
反码:正数的原码即为其反码,对于负数而言只需要将原码除符号位以外的位数取反
原码:数字不进行其他操作时数字最原始的二进制表示
补码:正数的原码即为其补码
负数的补码是上面取得的反码加1。
正数的原码,补码,反码是一样的
负数的反码事源码除符号位取反,负数的补码是反码+1
比如
-20 的二进制原码 :1001 0100(第一位为符号位
-20 的二进制反码 :1110 1011(符号位保留)
11101011
+
00000001
==1110 1100
-20 的二进制补码 :1110 1100 (反码+1
论证:原码+反码=1111111.。。
000000-原码 (负数原码的表示方法-原码)
00000明显减原码不掉,所以会向高位申请1(然后一直申请到最高位,,)
故而000000可用10000000表示(计算机位数有限,故而这个1最终不可能表示出来)也就相当于0000000==10000000(上3行仅仅是为了推出为什么提出100000000这个概念)
100000000 =1111111+1=原码+反码+1
=原码+补码
10000000-原码 = 补码而1000000相当于000000(这是第三次补充,为什么100000等于000000? 因为负数的原码+反码=11111111 如果这时候加个1,那么结果是1000000,那么这最开头的1一定比111111多一位,也就是计算机表示不出来,那么也就是计算机只能表示0000000,即000000 = 原码+补码
故而00000 - 原码 = 补码。。。
故而计算机计算负数的加法时只需要计算它的补码。。。。。
以上就是(java运算符 (java运算符优先级由高到低))全部内容,收藏起来下次访问不迷路!