打印

Java的位运算符实例(三)

[复制链接]
388|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ljz1999|  楼主 | 2020-8-14 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

六、三目运算符

三目运算符是一个特殊的运算符,它的语法形式如下:

布尔表达式?表达式1:表达式2

运算过程:如果布尔表达式的值为true,就返回表达式1的值,否则返回表达式2的值,例如:

int sum=90;
String str=sum<100 ? "失败" : "成功";

等价于下列代码:

String str=null;
if(num<100){
  str="失败";
}else{
  str="成功";
}

三目运算符和if……else语句相比,前者使程序代码更加简洁。

七、赋值运算符

赋值运算符是程序中最常用的运算符了,示例如下:

运算符
例子
含义
+=
x+=y
x=x+y
-=
x-=y
x=x-y
*=
x*=y
x=x*y
/=
x/=y
x=x/y
%=
x%=y
x=x%y
>>=
x>>=y
x=x>>y
>>>=
a>>>=y
x=x>>>y
<<=
a<<=y
x=x<<y
&=
x&=y
x=x&y
|=
x|=y
x=x|y
^=
x^=y
x=x^y

大家可以根据自己的喜好选择合适的运算符。

补充:

字符串运算符: + 可以连接不同的字符串。

转型运算符: () 可以将一种类型的数据或对象,强制转变成另一种类型。如果类型不相容,会报异常出来。





  • package com.zf.binary;











  • public class Test1 {







  •         public static void main(String[] args) {







  •                 /* 符号为:最高位同时表示图号,0为正数,1为负数 */







  •                 /*



  •                          1、二进制转换为十进制







  •                         二进制转换为10进制的规律为: 每位的值 * 2的(当前位-1次方)



  •                         例如:



  •                             00000001 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0  = 1



  •                             00000010 = 0 * 2^7 + 0 * 2^6 + 0 * 2^5 + 0 * 2^4 + 0 * 2^3 + 0 * 2^2 + 1 * 2^1 + 0 * 2^0  = 2



  •                             



  •                         2、二进制的符号位:



  •                                 最高位表示符号位,0表示正数  , 1表示负数



  •                                



  •                        



  •                         3、将二进制负数转换为十进制:先对该二进制数取反,然后加1,再转换为十进制,然后在前面加上负号



  •                                 例如: 10101011 最高位为1,所以为负数



  •                            第一步:取反: 01010100



  •                            第二步:加1 : 01010101



  •                            第三步:转换为10进制:85



  •                            第四步:加上负号: -85



  •                            所以      10101011 转换为十进制为 -85



  •                            



  •                     4、将十进制负数转换为二进制:先得到该十进制负数的绝对值,然后转换为二进制,然后将该二进制取反,然后加1



  •                             例如:-85



  •                             第一步:得到绝对值 85



  •                             第二步:转换为二进制:01010101



  •                             第二步:取反:                10101010



  •                             第三步:加1:                 10101011



  •                             所以,-85转换为二进制为  10101011



  •                  */







  •                 /*



  •                 ~ ‘非’ 运算符是将目标数的进制去反,即0变成1 ,1变成0



  •                 2的二进制码为 00000010 , 它取反为11111101 ,可见取反后结果为负数(二进制负数转换为十进制的步骤为:将二进制去反,然后+1)



  •                  将 11111101 转换为10进制 ,第一步去反 得到 00000010 然后 加1 得到 00000011 ,得到的结果为3 ,然后在前面加上负号就可以了



  •                  所以结果为-3



  •                  */



  •                 System.out.println(~2);







  •                 /*



  •                   ^ 异或 ,计算方式为:两个二进制数的位相同则为0 不同则为1



  •                   23转换为二进制为:00010111



  •                   12转换为二进制为:00001100



  •                                   计算结果为:00011011  =  27



  •                  */



  •                 System.out.println(23 ^ 12);







  •                 /*



  •                  & 按位与 ,计算方式为:两个二进制数的位都为1则为1 ,否则为0



  •                  1的二进制为 :00000001



  •                  2的二进制为 :00000010



  •                            结果为 :00000000 = 0



  •                  */



  •                 System.out.println(1&2);







  •                 /*



  •                   | 按位或 ,计算方式为:两个二进制位有一个为1就为1,否者为0



  •                   5 的二进制为:00000101



  •                   6 的二进制为:00000110



  •                                 结果为:00000111 = 7



  •                  */



  •                 System.out.println( 5 | 6);











  •                 /*



  •                   >> 有符号右移位  ,符号左边表示要被移位的数,右边表示需要移的位数,结果为正数则在左边补0,否则补1



  •                   3 的二进制为:00000010



  •                         向右移动1位:00000001 = 1



  •                  */



  •                 System.out.println(3 >> 1);











  •         }







干货群921296279

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

30

主题

36

帖子

1

粉丝