Java Long.rotateRight()方法

原文:https://www.studytonight.com/java-wrapper-class/java-long-rotateright-method

Java rotateRight()方法是java.lang包的 Long 类的一部分。此方法用于返回通过将作为参数传递的数字的二进制等价形式的二进制补码向右(即向低阶)旋转参数中指定的距离而获得的值。

这种方法也是基于比特移位操作,其中二进制数的所有比特被向左或向右移位到一定数量的位置。例如,rotateRight(10,1)指的是 10 的二进制表示向右旋转一位。10 的等价二进制为 00001010 ,通过右移 1 位将转换为 00000101 (即等于 5 )。

需要注意的是,负距离的右旋转相当于左旋转:rotateRight(val, -distance) == rotateLeft(val, distance)

语法:

public static long rotateRight(long i, int distance)

参数:

传递的参数是i和整数距离,前者是要旋转的二进制等价位,后者指定要旋转的位数。

返回:

返回通过将作为参数传递的数字的二进制等价形式的二进制补码向右(即向低阶)旋转方法中传递的距离而获得的值。

例 1:

这里,为了更好地理解该方法,取一个正数和一个负数。Long.toBinaryString()方法用于以二进制等价形式表示数字。

import java.lang. * ;

public class StudyTonight {

  public static void main(String[] args) {

    long n1 = 8;
    long n2 = -8;
    int val = 3;

    System.out.println("Binary equivalent is : " + Long.toBinaryString(n1));

    for (int i = 0; i < val; i++) {
      n1 = Long.rotateRight(n1, val); //returns the value after rotation
      System.out.println(n1);
    }

    System.out.println("Binary equivalent is : " + Long.toBinaryString(n2));

    for (int i = 0; i < val; i++) {
      n2 = Long.rotateRight(n2, val); //returns the value after rotation
      System.out.println(n2);
    }
  }
}

二进制等值为:1000 1 2305843009213693952 288230376151711744 二进制等值为:1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

例 2:

这里有一个用户定义的例子,任何使用这段代码的人都可以输入自己选择的值,并获得等效的输出。

import java.lang. * ;
import java.util. * ;

public class StudyTonight {

  public static void main(String[] args) {
    try {
      System.out.println("Enter the value and distance");
      Scanner sc = new Scanner(System. in );
      long n = sc.nextLong();
      int val = sc.nextInt();

      System.out.println("Binary equivalent is : " + Long.toBinaryString(n));

      for (int i = 0; i < val; i++) {
        n = Long.rotateRight(n, val); //returns the value after rotation
        System.out.println(n);
      }
    }
    catch(Exception e) {
      System.out.println("Invalid Input");
    }

  }
}

输入数值和距离 67 4 二进制等效值为:1000011 3458764513820540932 48278580054117171712 301741175033823232 1885823439613952


实时示例:

在这里,您可以测试实时代码示例。您可以为不同的值执行示例,甚至可以编辑和编写您的示例来测试 Java 代码。