برنامه چرخاندن بیت‌های یک عدد — راهنمای کاربردی

چرخاندن بیت‌های یک عدد، عملیاتی مشابه با شیفت دادن است، با این تقاوت که بیت‌هایی که در یک انتها بیرون می‌افتند، از انتهای دیگرمجددا وارد می‌شود. در چرخش چپ، بیت‌هایی که از انتهای چپ بیرون می‌افتند مجددا از انتهای راست وارد می‌شوند. در گردش به راست، بیت‌هایی که از انتهای راست بیرون می‌افتند مجددا از انتهای چپ وارد می‌شود.

برای مثال، فرض می‌شود که n با استفاده از هشت بیت ذخیره شده است. چرخش به چپ n = 11100101 به تعداد سه مرتبه، منجر به n = 00101111 می‌شود (سه مرتبه شیفت انجام شده است و سه عددی که از سمت چپ بیرون افتاده‌اند، مجددا از سمت راست وارد شده‌اند). اگر n با استفاده از ۱۶ بیت یا ۳۲ بیت ذخیره شود، شیفت به چپ n (یعنی ۰۰۰…۱۱۱۰۰۱۰۱) به صورت ۰۰٫٫۰۰۱۱۱۰۰۱۰۱۰۰۰ می‌شد شیفت به راست n = 11100101 برای سه مرتبه نیز منجر به n = 10111100 می‌شود (سه مرتبه شیفت دادن به راست موجب می‌شود که سه عدد از سمت راست بیرون بیفتند که این اعداد مجددا ا زسمت چپ وارد می‌شوند). اگر n با استفاده از هشت بیت ذخیره شود به صورت بیان شده است؛ ولیکن اگر n با استفاده از ۱۶ یا ۳۲ بیت ذخیره شود، چرخش به راست n (یعنی ۰۰۰…۱۱۱۰۰۱۰۱) به صورت ۱۰۱۰۰۰٫٫۰۰۱۱۱۰۰ خواهد بود. در ادامه، پیاده‌سازی روش بیان شده در بالا در زبان‌های برنامه‌نویسی گوناگون انجام شده است.

برنامه چرخاندن بیت‌های یک عدد در ++C

// C++ code to rotate bits  
// of number 
#include<iostream> 
  
using namespace std; 
#define INT_BITS 32 
class gfg 
{ 
      
/*Function to left rotate n by d bits*/
public: 
int leftRotate(int n, unsigned int d) 
{ 
      
    /* In n<<d, last d bits are 0. To 
     put first 3 bits of n at  
    last, do bitwise or of n<<d  
    with n >>(INT_BITS - d) */
    return (n << d)|(n >> (INT_BITS - d)); 
} 
  
/*Function to right rotate n by d bits*/
int rightRotate(int n, unsigned int d) 
{ 
    /* In n>>d, first d bits are 0.  
    To put last 3 bits of at  
    first, do bitwise or of n>>d 
    with n <<(INT_BITS - d) */
    return (n >> d)|(n << (INT_BITS - d)); 
} 
}; 
  
/* Driver code*/
int main() 
{ 
    gfg g; 
    int n = 16; 
    int d = 2; 
    cout << "Left Rotation of " << n <<  
            " by " << d << " is "; 
    cout << g.leftRotate(n, d); 
    cout << "\nRight Rotation of " << n << 
            " by " << d << " is "; 
    cout << g.rightRotate(n, d); 
    getchar(); 
}  
  
// This code is contributed by SoM15242

برنامه چرخاندن بیت‌های یک عدد در C

#include<stdio.h> 
#define INT_BITS 32 
  
/*Function to left rotate n by d bits*/
int leftRotate(int n, unsigned int d) 
{ 
   /* In n<<d, last d bits are 0. To put first 3 bits of n at  
     last, do bitwise or of n<<d with n >>(INT_BITS - d) */
   return (n << d)|(n >> (INT_BITS - d)); 
} 
  
/*Function to right rotate n by d bits*/
int rightRotate(int n, unsigned int d) 
{ 
   /* In n>>d, first d bits are 0. To put last 3 bits of at  
     first, do bitwise or of n>>d with n <<(INT_BITS - d) */
   return (n >> d)|(n << (INT_BITS - d)); 
} 
  
/* Driver program to test above functions */
int main() 
{ 
  int n = 16; 
  int d = 2; 
  printf("Left Rotation of %d by %d is ", n, d); 
  printf("%d", leftRotate(n, d)); 
  printf("\nRight Rotation of %d by %d is ", n, d); 
  printf("%d", rightRotate(n, d)); 
  getchar(); 
}

برنامه چرخاندن بیت‌های یک عدد در جاوا

// Java code to rotate bits  
// of number 
class GFG  
{ 
static final int INT_BITS = 32; 
  
/*Function to left rotate n by d bits*/
static int leftRotate(int n, int d) { 
      
    /* In n<<d, last d bits are 0.  
       To put first 3 bits of n at 
       last, do bitwise or of n<<d with 
       n >>(INT_BITS - d) */
    return (n << d) | (n >> (INT_BITS - d)); 
} 
  
/*Function to right rotate n by d bits*/
static int rightRotate(int n, int d) { 
      
    /* In n>>d, first d bits are 0.  
       To put last 3 bits of at 
       first, do bitwise or of n>>d  
       with n <<(INT_BITS - d) */
    return (n >> d) | (n << (INT_BITS - d)); 
} 
  
// Driver code 
public static void main(String arg[])  
{ 
    int n = 16; 
    int d = 2; 
    System.out.print("Left Rotation of " + n + 
                          " by " + d + " is "); 
    System.out.print(leftRotate(n, d)); 
      
    System.out.print("\nRight Rotation of " + n + 
                             " by " + d + " is "); 
    System.out.print(rightRotate(n, d)); 
} 
} 
  
// This code is contributed by Anant Agarwal.

برنامه چرخاندن بیت‌های یک عدد در پایتون ۳

# Python3 code to  
# rotate bits of number 
  
INT_BITS = 32
  
# Function to left 
# rotate n by d bits 
def leftRotate(n, d): 
  
    # In n<<d, last d bits are 0. 
    # To put first 3 bits of n at  
    # last, do bitwise or of n<<d 
    # with n >>(INT_BITS - d)  
    return (n << d)|(n >> (INT_BITS - d)) 
  
# Function to right 
# rotate n by d bits 
def rightRotate(n, d): 
  
    # In n>>d, first d bits are 0. 
    # To put last 3 bits of at  
    # first, do bitwise or of n>>d 
    # with n <<(INT_BITS - d)  
    return (n >> d)|(n << (INT_BITS - d)) & 0xFFFFFFFF
  
# Driver program to 
# test above functions  
n = 16
d = 2
  
print("Left Rotation of",n,"by"
      ,d,"is",end=" ") 
print(leftRotate(n, d)) 
  
print("Right Rotation of",n,"by"
     ,d,"is",end=" ") 
print(rightRotate(n, d)) 
  
# This code is contributed by 
# Smitha Dinesh Semwal

برنامه چرخاندن بیت‌های یک عدد در #C

// C# program to rotate  
// bits of a number 
using System; 
  
class GFG 
{ 
    static int INT_BITS = 32; 
  
    /* Function to left rotate n by d bits*/
    static int leftRotate(int n, int d) { 
          
        /* In n<<d, last d bits are 0.  
        To put first 3 bits of n at 
        last, do bitwise or of n<<d with 
        n >>(INT_BITS - d) */
        return (n << d) | (n >> (INT_BITS - d)); 
    } 
      
    /*Function to right rotate n by d bits*/
    static int rightRotate(int n, int d) { 
          
        /* In n>>d, first d bits are 0.  
        To put last 3 bits of at 
        first, do bitwise or of n>>d  
        with n <<(INT_BITS - d) */
        return (n >> d) | (n << (INT_BITS - d)); 
    } 
      
    // Driver code 
    public static void Main()  
    { 
        int n = 16; 
        int d = 2; 
          
        Console.Write("Left Rotation of " + n 
                      + " by " + d + " is "); 
        Console.Write(leftRotate(n, d)); 
          
        Console.Write("\nRight Rotation of " + n  
                       + " by " + d + " is "); 
        Console.Write(rightRotate(n, d)); 
    } 
} 
  
// This code is contributed by Sam007

خروجی قطعه کدهای بالا، به صورت زیر است.

Left Rotation of 16 by 2 is 64
Right Rotation of 16 by 2 is 4

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

منبع [+]

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *