一个简单的java示例彻底弄明白位运算

位运算符

&:按位与 \  如果相对应位都是1,则=为1,否则为0    \ (A&B),得到12,即0000 1100\
|:按位或    \   如果相对应位都是0,则=为0,否则为1   \ (A | B)得到61,即 0011 1101 \
~:按位非    \ 按位取反运算符翻转操作数的每一位,即01互换\ (〜A)得到-61,即1100 0011   \
^:按位异或  \    如果相对应位值相同,则=为0,否则为1 \ (A ^ B)得到49,即 0011 0001 \
<<左位移运算符 \ 左操作数按位左移右操作数指定的位数。      \   A << 2得到240,即 1111 0000 \
>>右位移运算符 \  左操作数按位右移右操作数指定的位数       \     A >> 2得到15即 1111      \
>>> 无符号右移  \    移动得到的空位以零填充                 \    A>>>2得到15即0000 1111    \
优先级S:~  波浪
   优先级A:<<、>>和>>>
       优先级B:&
           优先级C:^  shift+6
               优先级D:/

JAVA示例

public static void main(String[] args) {
	/* 60 = 0011 1100 */
	/* 13 = 0000 1101 */

	int A = 60;
	int B = 13;

	System.out.println( "A&B=" + (A&B) ); //0000 1100      12
	System.out.println( "A|B=" + (A|B) ); //0011 1101      61
	System.out.println( "~A=" + (~A) );   //1100 0011      -61
	System.out.println( "A^B=" + (A^B) ); //0011 0001      49
	System.out.println( "A<<2=" + (A<<2) ); //1111 0000      240
	System.out.println( "A>>2=" + (A>>2) ); //1111      15
	System.out.println( "A>>>2=" + (A>>>2) );//0000 1111      15
}

知识拓展

怎么用二进制表示负数?可通过以下几步:

1.取反码,即将对应的位取反

2.在反码基础上+1

3.补码 (根据需要表示的位数将位数补满)

如现有十进制数3414,通过上述操作可用二进制表示-3414

-原码:‭1101 0101 0110‬

-反码:0010 1010 1001

-反码+1:0010 1010 1010

-补码:‭1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0010 1010 1010‬

64位操作系统默认补码总位数为64位,所以-3414用二进制表示如下:

1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0010 1010 1010‬

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值