Shifts
बाएँ और दाएँ shift
Shifts, CoddyKit पर C Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
बिट खिसकाना
शिफ्ट संचालक किसी पूर्णांक के सभी बिटों को बाईं या दाईं ओर निश्चित संख्या में स्थानों तक खिसकाते हैं।
बाईं ओर खिसकाने का संचालक << और दाईं ओर खिसकाने का संचालक >> है।
#include <stdio.h>
int main(void) {
unsigned x = 1;
printf("1 << 3 = %u\n", x << 3);
return 0;
}बाईं ओर खिसकाने से गुणा
n स्थान बाईं ओर खिसकाने पर अचिह्नित मान 2 की घात n से गुणा हो जाता है।
1 << 3 का मान 8 और 5 << 1 का मान 10 होता है।
#include <stdio.h>
int main(void) {
printf("5 << 1 = %u\n", 5u << 1);
printf("3 << 4 = %u\n", 3u << 4);
return 0;
}दाईं ओर खिसकाने से भाग
n स्थान दाईं ओर खिसकाने पर अचिह्नित मान 2 की घात n से विभाजित हो जाता है; दाईं ओर से बाहर निकलने वाले बिट छोड़ दिए जाते हैं।
20 >> 2 का मान 5 होता है।
#include <stdio.h>
int main(void) {
printf("20 >> 2 = %u\n", 20u >> 2);
printf("7 >> 1 = %u\n", 7u >> 1);
return 0;
}दो की घातें
1 को बाईं ओर खिसकाना दो की घातें बनाने का सबसे तेज़ तरीका है।
1 << n दो की nवीं घात होती है।
#include <stdio.h>
int main(void) {
for (int n = 0; n < 6; n++) {
printf("2^%d = %u\n", n, 1u << n);
}
return 0;
}शिफ्ट को दृश्य रूप में समझना
पहले और बाद के बिट प्रदर्शित करने से पता चलता है कि बिटों का क्रम किस तरह खिसकता है।
#include <stdio.h>
void print_bits(unsigned char v) {
for (int i = 7; i >= 0; i--) putchar((v >> i) & 1 ? '1' : '0');
putchar('\n');
}
int main(void) {
unsigned char v = 0b00000110;
print_bits(v);
print_bits(v << 2);
return 0;
}एक बिट निकालना
बिट संख्या i पढ़ने के लिए मान को i स्थान दाईं ओर खिसकाइए और 1 के साथ मास्क कीजिए।
परिणाम 0 या 1 होता है।
#include <stdio.h>
int main(void) {
unsigned v = 0b10110;
for (int i = 0; i < 5; i++) {
printf("bit %d = %u\n", i, (v >> i) & 1);
}
return 0;
}बिट-दर-बिट मान बनाना
आप बिटों को सही स्थान तक खिसकाकर और उन्हें OR के साथ मिलाकर कोई संख्या बना सकते हैं।
#include <stdio.h>
int main(void) {
unsigned v = 0;
v |= (1u << 0);
v |= (1u << 2);
v |= (1u << 4);
printf("v = %u\n", v);
return 0;
}साइनयुक्त दाईं ओर शिफ्ट में सावधानी
ऋणात्मक चिह्नयुक्त पूर्णांक को दाईं ओर खिसकाने का व्यवहार कार्यान्वयन पर निर्भर होता है: इसमें चिह्न बिट की प्रतिलिपि बनाई जा सकती है।
पूर्वानुमेय बिट-स्तरीय क्रियाओं के लिए unsigned प्रकारों को प्राथमिकता दीजिए।
#include <stdio.h>
int main(void) {
int s = -8;
printf("-8 >> 1 = %d (implementation-defined)\n", s >> 1);
unsigned u = 8;
printf("8u >> 1 = %u\n", u >> 1);
return 0;
}अधिक शिफ्ट करने से बचें
प्रकार की चौड़ाई से अधिक या उसके बराबर मात्रा में शिफ्ट करना अनिर्धारित व्यवहार है।
32-बिट मान को 32 या उससे अधिक स्थानों तक शिफ्ट करना अनुमत नहीं है।
#include <stdio.h>
#include <limits.h>
int main(void) {
printf("unsigned has %zu bits\n", sizeof(unsigned) * CHAR_BIT);
printf("Safe shift 1u << 31 = %u\n", 1u << 31);
return 0;
}शिफ्ट और मास्क को मिलाना
शिफ्ट और मास्क को साथ में इस्तेमाल करके कई बिटों वाला फ़ील्ड निकाला जा सकता है। यहाँ हम एक बाइट के बीच के 4 बिट निकालते हैं।
#include <stdio.h>
int main(void) {
unsigned v = 0b11010110;
unsigned field = (v >> 2) & 0b1111;
printf("field = %u\n", field);
return 0;
}तेज़ गुणा और जोड़
शिफ्ट को मिलाकर स्थिरांकों से तेज़ी से गुणा किया जा सकता है। 10 से गुणा करना, 3 स्थान शिफ्ट करने (8 से गुणा) और 1 स्थान शिफ्ट करने (2 से गुणा) को जोड़ने के बराबर है।
#include <stdio.h>
int main(void) {
unsigned x = 7;
unsigned times10 = (x << 3) + (x << 1);
printf("7 * 10 = %u\n", times10);
return 0;
}त्वरित जाँच
शिफ्ट के बारे में अपने ज्ञान की जाँच कीजिए।
पुनरावृत्ति
आपने शिफ्ट ऑपरेटरों के बारे में सीखा:
<<बाईं ओर शिफ्ट करता है और दो की घातों से गुणा करता है।>>दाईं ओर शिफ्ट करता है और दो की घातों से भाग देता है।(v >> i) & 1एक बिट निकालता है।- पूर्वानुमेय शिफ्ट के लिए
unsignedका इस्तेमाल कीजिए और प्रकार की चौड़ाई या उससे अधिक स्थानों तक कभी शिफ्ट न कीजिए।
एआई शिक्षक के साथ C सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 39
- पाठ
- 144
अक्सर पूछे जाने वाले प्रश्न
क्या “Shifts” पाठ निःशुल्क है?
हाँ—“Shifts” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Shifts” में मैं क्या सीखूँगा?
बाएँ और दाएँ shift आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Shifts” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।