برنامه چرخاندن بیتهای یک عدد — راهنمای کاربردی
چرخاندن بیتهای یک عدد، عملیاتی مشابه با شیفت دادن است، با این تقاوت که بیتهایی که در یک انتها بیرون میافتند، از انتهای دیگرمجددا وارد میشود. در چرخش چپ، بیتهایی که از انتهای چپ بیرون میافتند مجددا از انتهای راست وارد میشوند. در گردش به راست، بیتهایی که از انتهای راست بیرون میافتند مجددا از انتهای چپ وارد میشود.
برای مثال، فرض میشود که 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
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش ساختمان دادهها
- مجموعه آموزشهای ساختمان داده و طراحی الگوریتم
- معرفی منابع آموزش ویدئویی هوش مصنوعی به زبان فارسی و انگلیسی
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- آموزش ساختمان داده — مجموعه مقالات جامع وبلاگ فرادرس
منبع [+]
مجموعه: برنامه نویسی, مهندسی کامپیوتر برچسب ها: Rotate bits of a number, برنامه چرخاندن بیت ها, برنامه روتیت بیت ها, چرخاندن بیت ها, چرخاندن بیت ها به چپ, چرخاندن بیت ها به راست, چرخاندن بیت ها در C, چرخاندن بیت ها در پایتون, چرخاندن بیت ها در جاوا, شیف دادن بیت ها, شیفت بیتی