算术移位 和 逻辑移位
博客专区 > pan_1308 的博客 > 博客详情
算术移位 和 逻辑移位
pan_1308 发表于7个月前
算术移位 和 逻辑移位
  • 发表于 7个月前
  • 阅读 21
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

//		System.out.println(5<<2); //运行结果是20  // 101 左移2位 10100
//		System.out.println(5>>2); //运行结果是 1
//		System.out.println(-5>>>2);
		// >> 和 << 算术移位,带符号位的 右移 和左移,不够补上 符号位(即是,正数右移,高位用0补,负数右移,高位用1补)
		// eg: 5  => 101  5>>2    5右移2位也就是 1  前面空的则由符号位 补齐,则是 001
		// eg: -5 => 101    取反:010,然后 +1 -5>>2  =》  最终: 011
		int i = -5;
		System.out.println(Integer.toBinaryString(i));       // 11111111111111111111111111111011
		System.out.println(Integer.toBinaryString(i >> 2));  // 11111111111111111111111111111110
		System.out.println(i >> 2);

		System.out.println("-----------------------");
		// >>> 和 <<< 逻辑移位,无符号位的 右移和左移, 带动符合移动,不够补0
		// 当负数使用无符号右移时,用0进行补位(自然而然的,就由负数变成了正数了)
		int k = 5; 
		System.out.println(Integer.toBinaryString(k));        // 101
		System.out.println(Integer.toBinaryString(k >>> 2));  // 1
		System.out.println( k >>> 2);                         // 1
		
		System.out.println("-----------------------");
		int m = -5; 
		System.out.println(Integer.toBinaryString(m));        // 11111111111111111111111111111011
		System.out.println(Integer.toBinaryString(m >>> 2));  // 111111111111111111111111111110
		System.out.println( m >>> 2);                         // 1073741822
	}
}

 

标签: java 移位运算
共有 人打赏支持
粉丝 5
博文 77
码字总数 56678
×
pan_1308
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: