java中6左移2怎么算_(六)Java中的按位运算

博客大搬家。

一、位运算符简介:

1.按位与&。如果两个整形数据 a、b 对应位都是1,则结果位才为1,否则为0,(int 最大值0x7fffffff ):

1 int a = 0x7fffffff;2 int b = 12;3 int c = 0;4 int aAndB = a&b; //aAndB is 12

5 int aAndC = a&c; //aAndC is 0

2.按位或|。如果两个操作数都是0,则结果为0,否则为1:

1 int a = 0x7fffffff;2 int b = 12;3 int c = 0;4 int aOrB = a|b; //aOrB is 2147483647

5 int aOrC = a|c; //aOrC is 2147483647

3.按位取反~。当操作数的二进制表示相同时,1位为0,0位为1:

1 int a = 0x7fffffff;2 int b = 12;3 int c = 0;4 a = ~a; //result is -2147483648

5 b = ~b; //result is -13;

6 c = ~c; //result is -1;

4.按位异或^。当两个操作位二进制表示相同时结果为0,否则为1:

1 int a = 0x7fffffff;2 int b = 12;3 int c = 0;4 c ^= a; //c is 2147483647

5 b ^= 8; //b is 4

6 a ^= a; //a is 0

5.左移<

1 int a = 0x7fffffff;2 int c = 3;3 c <<= 1; //c is 6

4 a <<= 1; //a is -2

6.右移>>。跟左移不同,如果最高位为0,则右移补0。如果最高位为1,则右移补1:

1 int a = 0x7fffffff;2 int a = 0x7fffffff;3 int b = 0;4 int c = 3;5 int d = -2;6 int e = -1;7 c >>= 1; //c is 1

8 a >>= 1; //a is 1073741823

9 b >>= 1; //b is 0

10 d >>= 1; //d is -1

11 e >>=1; //d is -1

7.无符号右移>>>。无论最高位是0还是1,左侧被移空的高位都填入0。

二、利用按位运算符,在很多情况下,可以进行方便的计算。

将大写字母变为小写,将小写字母变为大写( charArray[i]^= 32, 因为在ASCII码中,大写字母与小写字母差了32,因此使用异或运算符,通过与 0 相异或,原字符的二进制形式在其他位保留原有的值,在第 6 位相异或,如果原有位为 0 则变为 1, 原有位为 1 则变为 0):

1 String tempString ="1a2b3E5F6P7p";2 char [] charArray =tempString.toCharArray();3 for(int i = 0; i < charArray.length; i++)4   if(Character.isLetter(charArray[i])) charArray[i] ^= 32;56 System.out.println(String.valueOf(charArray)); //result is 1A2B3e5f6p7P

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值