Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम: दिए गए नंबर के बिट्स रोटेट करना

बिट रोटेशन

  • लेफ्ट रोटेशन: बिट्स बाएं से दाएं शिफ्ट होते हैं, MSB से निकला बिट LSB पर आता है।
  • राइट रोटेशन: बिट्स दाएं से बाएं शिफ्ट होते हैं, LSB से निकला बिट MSB पर आता है।

लेफ्ट रोटेशन प्रोग्राम

#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: ");
    scanf("%d", &rotate);
    size = sizeof(int) * 8; // 32
    rotate %= size; // रोटेशन को साइज के भीतर लाएं
    while(rotate--) {
        msb = (number >> (size - 1)) & 1; // MSB निकालें
        number = (number << 1) | msb;     // लेफ्ट शिफ्ट और MSB को LSB पर रखें
    }
    printf("After left rotation: %d\n", number);
    return 0;
}

आउटपुट

Enter any number: 12
Enter number of rotations: 2
After left rotation: 48

व्याख्या

12 = 0000...001100 (बाइनरी)

1 रोटेशन: 0000...011000 = 24

2 रोटेशन: 0000...110000 = 48

राइट रोटेशन प्रोग्राम

#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: ");
    scanf("%d", &rotate);
    size = sizeof(int) * 8;
    rotate %= size;
    while(rotate--) {
        lsb = number & 1;              // LSB निकालें
        number = (number >> 1) | (lsb << (size - 1)); // राइट शिफ्ट और LSB को MSB पर रखें
    }
    printf("After right rotation: %d\n", number);
    return 0;
}

आउटपुट

Enter any number: 18
Enter number of rotations: 2
After right rotation: 4

व्याख्या

18 = 0000...010010

1 रोटेशन: 0000...001001 = 9

2 रोटेशन: 0000...000100 = 4

सामान्य रोटेशन फंक्शन

unsigned int rotate_left(unsigned int x, int n) {
    int size = sizeof(x) * 8;
    n %= size;
    return (x << n) | (x >> (size - n));
}

unsigned int rotate_right(unsigned int x, int n) {
    int size = sizeof(x) * 8;
    n %= size;
    return (x >> n) | (x << (size - n));
}

उपयोग केस

  • क्रिप्टोग्राफी (AES, SHA आदि)
  • हैश फंक्शन्स
  • बिटबोर्ड ऑपरेशन्स (गेम प्रोग्रामिंग)
  • सर्कुलर बफर इंडेक्सिंग
  1. त्रिकोणीय माचिस संख्या (Triangular Matchstick Number) के लिए C/C++ प्रोग्राम? त्रिकोणीय माचिस संख्या (Triangular Matchstick Number) के लिए C/C++ प्रोग्राम?

    माचिस की तीलियों का उपयोग करके बनाया गया एक त्रिकोण जो एक समबाहु त्रिकोण बनाने के लिए व्यवस्थित होता है, इसे त्रिकोणीय माचिस संख्या कहा जाता है। त्रिकोणीय माचिस संख्या माचिस त्रिकोण बनाने के लिए आवश्यक माचिस की तीलियों की संख्या है। इस समस्या में, हमारे पास माचिस पिरामिड की मंजिलों की संख्या X है।

  1. - दी गई संख्या हैप्पी नंबर है या नहीं जांचने के लिए Python प्रोग्राम

    जब दी गई संख्या हैप्पी नंबर है या नहीं जांचने की आवश्यकता होती है, तो % ऑपरेटर, // ऑपरेटर और + ऑपरेटर का उपयोग किया जा सकता है।हैप्पी नंबर वह है जो 1 के रूप में समाप्त होता है, जब इसे संख्या में हर अंक के वर्ग के योग से बदला जाता है।इसके लिए एक प्रदर्शन नीचे दिया गया है:उदाहरण 0: remaining =

  1. - दी गई संख्या डिसैरियम नंबर है या नहीं जांचने के लिए Python प्रोग्राम

    जब दी गई संख्या डिसैरियम नंबर है या नहीं जांचने की आवश्यकता होती है, तो अंकों का योग उनकी संबंधित पोजीशन की पावर तक कंप्यूट किया जाता है। इससे पहले, संख्या में मौजूद अंकों की संख्या निर्धारित की जाती है।डिसैरियम नंबर वह है जहां उसके अंकों का योग उनकी संबंधित पोजीशन की पावर तक होता है जो मूल संख्या क