落書きノート

ふと自分が気になった事を書いてます

Javaで問題を解く

解きながら学ぶJava 入門編

解きながら学ぶJava 入門編

// q7-12
import java.util.Scanner;

class q7_12 {
    
    public static void printBits(int x) {
        for(int i = 31; i >= 0; i--)
            System.out.print(((x >>> i & 1) == 1) ? '1' : '0');
    }

    public static int rRotate(int x, int n) {
        n %= 32;
        return n != 0 ? (x >>> n) | (x << (32 - n)) : x;
    }

    public static int lRotate(int x, int n) {
        n %= 32;
        return n != 0 ? (x << n) | (x >>> 32 - n) : x;
    }
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println("整数xをnビット回転します。");
        System.out.print("x : ");
        int x = scan.nextInt();
        System.out.print("n : ");
        int n = scan.nextInt();
        System.out.print("回転前 : ");
        printBits(x);
        System.out.println();
        System.out.print("右回転 : ");
        printBits(rRotate(x, n));
        System.out.println();
        System.out.print("左回転 : ");
        printBits(lRotate(x, n));
        System.out.println();
    }
}