พิจารณาปัจจัยด้านล่างเพื่อเขียนโปรแกรม C เพื่อหมุนบิตสำหรับตัวเลขที่กำหนด
-
หมุนบิตจากซ้ายไปขวาหรือขวาไปซ้าย
-
ในการหมุนซ้าย บิตจะถูกเลื่อนจากซ้ายไปขวา
-
ในการหมุนทางขวา บิตจะถูกเลื่อนจากขวาไปซ้าย
-
ใช้ตัวเลขแล้วลองหมุนไปทางซ้ายหรือขวาตามโปรแกรมของผู้ใช้
-
ผู้ใช้ต้องป้อนการหมุนตัวเลขในขณะใช้งานพร้อมกับตัวเลข
โปรแกรมที่ 1
ต่อไปนี้เป็นโปรแกรม C เพื่อใช้หมุนซ้าย สำหรับหมายเลขที่กำหนด
#include<stdio.h>
#include<stdlib.h>
int main(){
int number, rotate, Msb, size;
printf("Enter any number:");
scanf("%d",&number);
printf("Enter number of rotations:\n");
scanf("%d",&rotate);
size = sizeof(int) * 8;
rotate %= size;
while(rotate--){
Msb = (number >> size) & 1;
number = (number << 1) | Msb;
}
printf("After Left rotation the value is = %d\n",number);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter any number:12 Enter number of rotations: 2 After Left rotation the value is = 48
โปรแกรม 2
รับด้านล่างเป็นโปรแกรม C เพื่อใช้การหมุนขวา สำหรับหมายเลขที่กำหนด
#include<stdio.h>
#include<stdlib.h>
int main(){
int number,rotate, Lsb, size;
printf("Enter any number:");
scanf("%d",&number);
printf("Enter number of rotations:\n");
scanf("%d",&rotate);
size = sizeof(int) * 8;
rotate %= size;
while(rotate--){
Lsb = number & 1;
number = (number >> 1) &(~(1<<size));
number=number|(Lsb<<size);
}
printf("After right rotation the value is = %d\n",number);
return 0;
} ผลลัพธ์
เมื่อโปรแกรมข้างต้นทำงาน มันจะให้ผลลัพธ์ดังต่อไปนี้ −
Enter any number:18 Enter number of rotations: 2 After right rotation the value is = 4