java实现循环左移和右移的简单算法

 byte a=112,用程序实现,将其循环左移三位右移三位

112的二进制原码:0111 0000

112循环左移3位后的二进制码:1000 0011

112循环右移3位后的二进制码:0000 1110

 

先将循环左移的程序代码告诉大家:

public class TestCircle{
 public static void main(String args[]){
  byte x=112;
  System.out.println((byte)(x<<3|x>>5));
 }
}

程序的输出结果是-125,它的原码为1111 1101,补码为1000 0011(正好是112循环左移三位后的数字)

 

再看循环右移的程序代码:

public class TestCircle{
 public static void main(String args[]){
  byte x=112;
  System.out.println((byte)(x>>3|x<<5));
 }
}

程序的输出结果是14,他的原码、补码相同都是0000 1110(正好是112循环右移三位后的数字)

 

总结:对于一个数据类型长度为L的数据n,对其进行循环左移m位(或右移m位),只需将数据n左移(或右移)m位的结果和数据n右移(或左移)L-m位的结果进行或运算,再将或运算的结果强制转换为原类型即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值