Java移位运算

本文探讨了Java中的移位运算,特别是无符号右移>>>。指出long型每64位一个循环,int型每次移位的特点。还讨论了正数与负数在有符号右移>>和左移<<中的不同行为,以及无符号右移>>>如何使负数变为正数。通过示例代码进行说明,并提供了相关学习资源链接。
摘要由CSDN通过智能技术生成

1.java中无符号右移>>>,long型每64位一个循环,int型每

       public static void main(String[] args) {

		
		//long型无符号右移64位一个循环
		long a = 33;
		for (int i = 0; i < 65; i++) {
			System.out.println(i + " " + (a >>> i));
		}
		
		//int型无符号右移32位一个循环
		int b = 33;
		for (int i = 0; i < 33; i++) {
			System.out.println(i + " " + (b >>> i));
		}
		
		
	}

只有无符号右移这种运算操作,没有<<<这种操作。

2.正数与负数的移位运算

>>

有符号右移,移位后,正数左边补0,负数左边补1

<<

移位时,带着符号一起移动,右侧都补0

>>>

不管正负,左侧统一补0,所以负数无符号右移后,变为正数

示例代码如下:

/**
	 * 补码就是负数在计算机中的二进制表示方式
	 * 一个整数按照绝对值大小转换为二进制,是为原码,原码取反再加1是为补码
	 * -7
	 * 00000000 00000000 00000000 0111
	 * 取反
	 * 11111111 11111111 11111111 1000
	 * 加1
	 * 11111111 111
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值