- 1 1. परिचय
- 2 2. C Gengo मा संख्याहरू देखाउने आधार | 10‑आधारिक·16‑आधारिक·8‑आधारिक
- 3 3. C भाषा मा द्विआधारी संख्या देखाउने तरिका(कोड उदाहरण सहित)
- 4 4. C23 मानकमा नयाँ सुविधा %b निर्देशक
- 5 5. चित्रात्मक रूपमा बाइनरी प्रतिनिधित्व र बिट अपरेसन बुझ्ने
- 6 6. FAQ(प्रायः सोधिने प्रश्न)
- 6.1 Q1: किन C gengo मा मानक रूपमा 2‑आधारिक स्वरूप निर्दिष्टकर्ता छैन?
- 6.2 Q2: C23 kikaku को %b निर्दिष्टकर्ता प्रयोग गर्न नसकेमा, के गर्नु पर्छ?
- 6.3 Q3: Python र Java मा 2‑आधारिक संख्याको प्रदर्शन सजिलो छ भन्ने सुनेँ। के यो सत्य हो?
- 6.4 Q4: 2‑आधारिक संख्याको कोडमा दायाँ सिफ्टको परिणाम अपेक्षित जस्तो नआउँदा किन हुन्छ?
- 6.5 Q5: printf द्वारा 2‑आधारिक संख्या देखाउँदा अंकहरू कम हुन सक्छ। के गर्नु पर्छ?
- 6.6 Q6: वास्तविक विकास स्थलमा 2‑आधारिक संख्याको प्रदर्शन प्रयोग गरिन्छ?
- 6.7 Q7: बिट संचालन र 2‑आधारिक संख्याको प्रदर्शन सिक्न उपयोगी स्रोतहरू छन्?
- 7 7. सारांश
1. परिचय
द्विआधारी संख्या के हो? किन महत्त्वपूर्ण छ?
द्विआधारी संख्या कम्प्युटरको संसारमा सबैभन्दा आधारभूत संख्यात्मक अभिव्यक्ति हो। 0 र 1 को संयोजनले मेमोरीभित्रको डेटा र हार्डवेयरको अवस्थालाई दर्शाउँछ। प्रोग्रामिङमा, डेटा बिट अपरेसन, अवस्था व्यवस्थापन, बाइनरी फाइल विश्लेषण आदि धेरै परिस्थितिहरूमा द्विआधारी संख्यालाई प्रयोग गरिन्छ।
C Gengo कार्यक्षम प्रोग्राम लेख्न व्यापक रूपमा प्रयोग हुने भाषा हो, तर मानक पुस्तकालयमा द्विआधारी संख्या प्रदर्शनको प्रत्यक्ष विधि उपलब्ध छैन। यस लेखमा, शुरुआतीहरूले पनि बुझ्न सकून् भन्ने गरी, C Gengo मा द्विआधारी संख्या प्रदर्शन विधि आधारदेखि व्याख्या गरिनेछ, साथै व्यावहारिक कोड उदाहरणहरू र नवीनतम C23 Kikaku बारे पनि चर्चा गरिनेछ।
2. C Gengo मा संख्याहरू देखाउने आधार | 10‑आधारिक·16‑आधारिक·8‑आधारिक
मानक ढाँचा निर्दिष्टकर्ता को व्याख्या
C Gengo मा, printf
कार्यलाई प्रयोग गरेर संख्याहरूलाई स्क्रिनमा देखाउन सकिन्छ। तल सामान्य ढाँचा निर्दिष्टकर्ता र तिनीहरूको प्रयोगहरू छन्।
%d
: 10‑आधारिक (डिफल्ट पूर्णांक अभिव्यक्ति)%o
: 8‑आधारिक (प्रायः सुरुमा 0 जोडेर देखाइन्छ)%x
/%X
: 16‑आधारिक (सानो अक्षर/ठूलो अक्षरको फरकले लेखाइन्छ)
उदाहरणका लागि, तलको कोड चलाएमा, प्रत्येक स्वरूपमा संख्या देखाइन्छ।
#include <stdio.h>
int main() {
int num = 42;
printf("दशमलव: %d
", num);
printf("अष्टाधारी: %o
", num);
printf("षोडश: %x
", num);
return 0;
}
आउटपुट उदाहरण:
दशमलव: 42
अष्टाधारी: 52
षोडशाधारी: 2a
द्विआधारी ढाँचा नहुनुको कारण
C Gengo को मानक पुस्तकालयमा, द्विआधारी प्रदर्शनको ढाँचा निर्दिष्टकर्ता उपलब्ध छैन। यसको कारण ऐतिहासिक डिजाइन विचारधारा हो। C Gengo मूलत: प्रणाली प्रोग्रामिङको लागि विकास गरिएको थियो, त्यसैले द्विआधारी प्रदर्शन भन्दा प्रभावकारी मेमोरी अपरेसनलाई प्राथमिकता दिइयो।
3. C भाषा मा द्विआधारी संख्या देखाउने तरिका(कोड उदाहरण सहित)
बिट अपरेसन प्रयोग गरेर विधि
C भाषामा, बिट अपरेसन प्रयोग गरेर द्विआधारी प्रदर्शन गर्न सकिन्छ। तल 8-बिटको मानलाई द्विआधारी रूपमा देखाउने कोड उदाहरण छ।
#include <stdio.h>
void printBinary(int num) {
for (int i = 7; i >= 0; i--) {
printf("%d", (num >> i) & 1);
}
printf("
");
}
int main() {
int num = 42;
printf("बाइनरी: ");
printBinary(num);
return 0;
}
आउटपुट उदाहरण:
बाइनरी संख्या: 00101010
कोडको व्याख्या
(num >> i)
:num
लाई दायाँ शिफ्ट गरेर, लक्ष्य बिटलाई सबैभन्दा कम स्थानमा सारिन्छ।& 1
: सबैभन्दा कम बिट निकाल्छ।printf
: प्रत्येक बिटलाई क्रमशः आउटपुट गर्छ।
यो विधि सरल, बहुपयोगी र कुनै पनि पूर्णांकसँग काम गर्न सक्छ।
सामान्य कस्टम फङ्क्शन
द्विआधारी प्रदर्शनलाई अझ लचिलो बनाउन, कुनै पनि बिट चौडाइलाई समर्थन गर्ने सामान्य फङ्क्शन बनाउन पनि सम्भव छ।
#include <stdio.h>
void printBinaryGeneric(unsigned int num, int bitWidth) {
for (int i = bitWidth - 1; i >= 0; i--) {
printf("%d", (num >> i) & 1);
}
printf("\n");
}
int main() {
int num = 42;
printf("16-बिट चौडाइको द्विआधारी: ");
printBinaryGeneric(num, 16);
return 0;
}
आउटपुट उदाहरण:
१६-बिट चौडाइको द्विआधारी संख्या: 0000000000101010
व्यावहारिक प्रयोग केसहरू
1. बिट फ्ल्याग व्यवस्थापन
बिट अपरेसन प्रयोग गरेर, धेरै फ्ल्यागहरूलाई एकै चलमा व्यवस्थापन गर्न सकिन्छ। उदाहरणका लागि, तलको जस्ता परिस्थितिहरूमा उपयोगी हुन्छ।
- फ्ल्याग अन छ या अफ छ जाँच गर्नु।
- निर्दिष्ट फ्ल्यागलाई अन गर्नु।
- निर्दिष्ट फ्ल्यागलाई अफ गर्नु।
2. डिबगिङ्गको लागि आउटपुट
प्रोग्राम डिबग गर्दा, मेमोरीको सामग्रीलाई द्विआधारीमा जाँच्न चाहनुहुन्छ। यस्तो परिस्थितिमा, द्विआधारी प्रदर्शन अत्यन्त उपयोगी हुन्छ।
4. C23 मानकमा नयाँ सुविधा %b
निर्देशक
%b
निर्देशकको सारांश
अहिलेसम्मको C भाषा मा, मानक स्वरूप निर्दिष्टकर्ता द्वारा द्विआधारी संख्या देखाउने तरिका उपलब्ध थिएन। तर, C23 मा तलको जस्तै नयाँ स्वरूप निर्दिष्टकर्ता परिचय गराइयो:
%b
: द्विआधारी संख्या देखाउनको लागि स्वरूप निर्दिष्टकर्ता।
यसले बिट अपरेसन प्रयोग गरेर बनाएको आफ्नै फङ्क्शन नबनाई पनि, सजिलै द्विआधारी संख्या देखाउन सकिन्छ।
कोड उदाहरण:C23 को %b
निर्देशक प्रयोग गरेर द्विआधारी प्रदर्शन
तलको, %b
निर्देशक प्रयोग गरेर आधारभूत कोड उदाहरण हो।
#include <stdio.h>
int main() {
int num = 42;
printf("बाइनरी: %b
", num);
return 0;
}
आउटपुट उदाहरण:
बाइनरी संख्या: 101010
%b
को विशेषता
- सजिलोपन
- जटिल बिट अपरेसन वा लूप प्रक्रिया आवश्यक नहुनाले, सरल कोडले सम्भव हुन्छ।
- पठनीयता
- अन्य स्वरूप निर्दिष्टकर्ताहरूसँग एकरूपता भएकोले, कोडको समग्र पठनीयता सुधार हुन्छ।
कम्पाइलर समर्थन स्थिति
C23 मानक नयाँ भएकोले, सबै कम्पाइलरहरूले %b
निर्देशकलाई समर्थन गर्दैनन्। तल वर्तमान समर्थन स्थिति सारांशित गरिएको छ:
- समर्थन गर्ने कम्पाइलर
- GCC: संस्करण 12 पछि आंशिक समर्थन।
- Clang: नवीनतम संस्करणमा समर्थन चलिरहेको।
- समर्थन नगर्ने कम्पाइलर
- पुराना संस्करणको GCC वा Clang, वा केही स्वनिर्मित कम्पाइलरहरूमा समर्थन छैन।
पर्यावरण समर्थन नगरेको अवस्थामा समाधान विधि
यदि प्रयोग गरिरहेको कम्पाइलर C23 मानक वा %b
निर्देशकलाई समर्थन गर्दैन भने, तलका विकल्पहरू प्रयोग गर्नुहोस्:
1. आफ्नै फङ्क्शन प्रयोग गर्नुहोस्
पहिले प्रस्तुत गरिएको बिट अपरेसन प्रयोग गरेको आफ्नै फङ्क्शन (उदाहरण: printBinary
) प्रयोग गर्नुहोस्।
2. तेस्रो पक्ष पुस्तकालयको प्रयोग
केही तेस्रो पक्ष पुस्तकालयहरूले द्विआधारी प्रदर्शनको लागि कार्यक्षमता प्रदान गर्छन्। उदाहरणका लागि, glib
आदि प्रयोग गरेर आफ्नै विस्तार गर्न सम्भव छ।
3. C23 समर्थन वातावरणको निर्माण
नयाँ कम्पाइलर वातावरण स्थापना गरेर, C23 मानक प्रयोग गर्न सकिने बनाउने विचार गर्नुहोस्।
5. चित्रात्मक रूपमा बाइनरी प्रतिनिधित्व र बिट अपरेसन बुझ्ने
5.1 बाइनरी रूपान्तरणको फ्लोचार्ट
दशमलवलाई बाइनरीमा रूपान्तरण गर्दा आधारभूत चरणहरूलाई तलको उदाहरणमार्फत व्याख्या गर्नेछौं।
उदाहरण: दशमलव「42」लाई बाइनरीमा रूपान्तरण गर्ने
- 42लाई 2 ले भाग गर्ने(वाणिज्य र बाँकीलाई रेकर्ड गर्नुहोस्)
- वाणिज्य: 21, बाँकी: 0
- 21लाई 2 ले भाग गर्ने
- वाणिज्य: 10, बाँकी: 1
- 10लाई 2 ले भाग गर्ने
- वाणिज्य: 5, बाँकी: 0
- 5लाई 2 ले भाग गर्ने
- वाणिज्य: 2, बाँकी: 1
- 2लाई 2 ले भाग गर्ने
- वाणिज्य: 1, बाँकी: 0
- 1लाई 2 ले भाग गर्ने
- वाणिज्य: 0, बाँकी: 1
बाँकीहरूलाई उल्टो क्रममा राख्दा,「101010」とनतिजा, यो 42 लाई बाइनरीमा रूपान्तरण गरेको परिणाम हो।
चित्र: बाइनरी रूपान्तरण प्रक्रिया
42 ÷ 2 = 21 ... 0
21 ÷ 2 = 10 ... 1
10 ÷ 2 = 5 ... 0
5 ÷ 2 = 2 ... 1
2 ÷ 2 = 1 ... 0
1 ÷ 2 = 0 ... 1
--------------
बाइनरी: 101010
यो प्रक्रिया प्रोग्राममा पनि समान रूपमा प्रक्रिया हुन्छ। कोडको कार्यविधि बुझ्न उपयोगी विचार हो।
5.2 बिट अपरेसनको दृश्यात्मक व्याख्या
बिट अपरेसनहरू संख्याको विशिष्ट बिटहरूलाई सञ्चालन गर्दा प्रयोग गरिन्छ। यहाँ, प्रतिनिधि बिट अपरेसन「शिफ्ट अपरेसन」लाई चित्रसँगै व्याख्या गर्नेछौं।
दायाँ शिफ्ट अपरेसन(>>)
दायाँ शिफ्ट अपरेसनले संख्याको बिटहरूलाई दायाँतिर सार्ने कार्य हो।
- उदाहरण: बाइनरी「101010」लाई 1 बिट दायाँ शिफ्ट गर्ने
- मूल मान:
101010
(दशमलव: 42) - दायाँ शिफ्ट पछि:
010101
(दशमलव: 21)
चित्र: दायाँ शिफ्टको गति
मूल्य: 101010
दाहिने शिफ्ट: 010101
उपयोग:
- संख्यालाई 2 ले भाग गर्दा प्राप्त मान (पूर्णांक भाग) निकाल्ने।
- विशिष्ट बिट निकाल्दा प्रयोग गरिन्छ।
बायाँ शिफ्ट अपरेसन(<<)
बायाँ शिफ्ट अपरेसनले संख्याको बिटहरूलाई बायाँतिर सार्ने कार्य हो।
- उदाहरण: बाइनरी「101010」लाई 1 बिट बायाँ शिफ्ट गर्ने
- मूल मान:
101010
(दशमलव: 42) - बायाँ शिफ्ट पछि:
1010100
(दशमलव: 84)
चित्र: बायाँ शिफ्टको गति
मूल्य: 101010
बायाँ शिफ्ट: 1010100
उपयोग:
- संख्यालाई 2 गुणा गर्दा प्रयोग गरिन्छ।
- द्रुत गुणनको कार्यान्वयन।
5.3 मास्क अपरेसनद्वारा बिट व्यवस्थापन
विशिष्ट बिटहरूलाई सञ्चालन गर्ने「मास्क सञ्चालन」 पनि C भाषामा प्राय प्रयोग हुन्छ। तलको उदाहरणमा व्याख्या गरिएको छ।
उदाहरण: चौथो बिटलाई अन बनाउने(OR अपरेसन)
- मूल मान:
00001010
(दशमलव: 10) - मास्क:
00010000
(केवल चौथो बिट 1) - अपरेसन परिणाम:
00011010
(दशमलव: 26)
चित्र: OR अपरेसनको कार्यविधि
00001010 (मूल्य)
| 00010000 (मास्क)
------------
00011010 (परिणाम)
उपयोग:
- विशिष्ट बिटलाई अन बनाउने।
- फ्ल्याग व्यवस्थापनमा प्रयोग।

6. FAQ(प्रायः सोधिने प्रश्न)
Q1: किन C gengo मा मानक रूपमा 2‑आधारिक स्वरूप निर्दिष्टकर्ता छैन?
A:
C gengo को डिजाइन सुरु भएको बेला, कार्यक्रमको कार्यक्षमता सबैभन्दा प्राथमिकता थियो। त्यसैले, मानक पुस्तकालयमा 10‑आधारिक, 8‑आधारिक, 16‑आधारिक संख्याको प्रदर्शन उपलब्ध गराइएको थियो, तर 2‑आधारिक संख्याको प्रदर्शन केवल विशिष्ट उपयोग केसहरूमा मात्र प्रयोग हुने विचार गरिएको थियो।
तर, C23 kikaku मा %b
निर्दिष्टकर्ता थपिएपछि, अहिले 2‑आधारिक संख्याको प्रदर्शन अझ सजिलो भएको छ।
Q2: C23 kikaku को %b
निर्दिष्टकर्ता प्रयोग गर्न नसकेमा, के गर्नु पर्छ?
A:
C23 kikaku लाई समर्थन नगर्ने वातावरणमा, तलका विधिहरू प्रयास गर्नुहोस्:
- बिट गणना प्रयोग गरेर बनाएको आफ्नै कार्यलाई प्रयोग गर्नुहोस्
आफैं 2‑आधारिक संख्याको प्रदर्शनको लागि कार्य (उदाहरण:printBinary
) बनाउने सामान्य हो। - सम्बन्धित कम्पाइलरको स्थापना
नवीनतम संस्करणको GCC वा Clang स्थापना गरेर C23 को सुविधाहरू प्रयोग गर्न सकिने सम्भावना छ। - तृतीय-पक्ष पुस्तकालयको उपयोग
केही पुस्तकालयहरूमा 2‑आधारिक संख्याको प्रदर्शनको लागि उपयोगी कार्यहरू समावेश छन्।
Q3: Python र Java मा 2‑आधारिक संख्याको प्रदर्शन सजिलो छ भन्ने सुनेँ। के यो सत्य हो?
A:
हो, Python र Java मा 2‑आधारिक संख्याको प्रदर्शन सजिलै गर्न सकिन्छ। तल प्रत्येक भाषाको उदाहरणहरू देखाइन्छ:
Python को उदाहरण
num = 42
print(bin(num)) # आउटपुट: 0b101010
Java को उदाहरण
int num = 42;
System.out.println(Integer.toBinaryString(num)); // आउटपुट: 101010
यी भाषाहरूमा, निर्मित कार्यहरूद्वारा सजिलै 2‑आधारिक संख्या देखाउन सकिन्छ। अर्कोतर्फ, C gengo मा मानक पुस्तकालयको समर्थन नभएको कारण, बिट गणना वा C23 kikaku को नयाँ सुविधाहरू प्रयोग गर्न आवश्यक छ।
Q4: 2‑आधारिक संख्याको कोडमा दायाँ सिफ्टको परिणाम अपेक्षित जस्तो नआउँदा किन हुन्छ?
A:
दायाँ सिफ्टको परिणाम अपेक्षित जस्तो नआउँदा, तलका बुँदाहरू जाँच गर्नुहोस्:
- साइन गरिएको पूर्णांक प्रयोग गरिरहेको सम्भावना
- साइन गरिएको पूर्णांक(
int
आदि)लाई दायाँ सिफ्ट गर्दा, साइन बिट(सबैभन्दा माथिल्लो बिट)राखिन सक्छ (अंकगणितीय सिफ्ट)。 - समाधानको रूपमा, साइनरहित पूर्णांक(
unsigned int
आदि)प्रयोग गर्नुहोस्।
- सिफ्टको चौडाइ सीमा बाहिर छ
- सिफ्ट गणनामा निर्दिष्ट बिट संख्या डेटा प्रकारको बिट संख्यालाई (उदाहरणका लागि 32‑बिट) पार गरेमा, परिणाम अनिर्धारित हुन सक्छ।
- सिफ्टको चौडाइ उपयुक्त छ कि जाँच गर्नुहोस्।
Q5: printf द्वारा 2‑आधारिक संख्या देखाउँदा अंकहरू कम हुन सक्छ। के गर्नु पर्छ?
A:
अंकहरू कम हुने कारण बिट चौडाइ स्थिर नहुनु हो। यसलाई समाधान गर्न, प्रदर्शन गर्ने अंक संख्या निर्दिष्ट गर्ने कार्य प्रयोग गर्नुहोस्।
तल 16‑बिट चौडाइमा अनिवार्य रूपमा आउटपुट गर्ने उदाहरण हो:
void printBinaryFixed(unsigned int num) {
for (int i = 15; i >= 0; i--) {
printf("%d", (num >> i) & 1);
}
printf("
");
}
यो विधिमा, सधैं निर्दिष्ट बिट चौडाइमा देखाइन्छ।
Q6: वास्तविक विकास स्थलमा 2‑आधारिक संख्याको प्रदर्शन प्रयोग गरिन्छ?
A:
हो, विशेष गरी तलका परिस्थितिहरूमा प्रयोग गरिन्छ:
- हार्डवेयर नियन्त्रण
- बिट स्तरमा सेटिङ गर्ने डिभाइस ड्राइभर विकास।
- बाइनरी डेटा विश्लेषण
- फाइल ढाँचा र नेटवर्क प्रोटोकल विश्लेषणमा उपयोगी हुन्छ।
- डिबग
- विशिष्ट फ्ल्याग वा स्थितिको जाँच गर्न 2‑आधारिक संख्याको प्रदर्शन प्रयोग गरिन्छ।
Q7: बिट संचालन र 2‑आधारिक संख्याको प्रदर्शन सिक्न उपयोगी स्रोतहरू छन्?
A:
तलका स्रोतहरू प्रयोग गर्दा, प्रभावकारी रूपमा सिक्न सकिन्छ:
- पुस्तकहरू
- 『C puroguramingu nyuumon』: आधारभूतदेखि बिट संचालनसम्म समेटिएको।
- 『C gengo ni yoru shisutemu puroguramingu』: व्यावहारिक अनुप्रयोगहरू सिक्न सकिन्छ।
- अनलाइन स्रोतहरू
- GeeksforGeeks: बिट संचालन र 2‑आधारिक संख्यासँग सम्बन्धित विस्तृत व्याख्या।
- Qiita: जापानी भाषाका लेखहरू प्रचुर मात्रा मा।
7. सारांश
लेखको सम्पूर्ण सारांश
यस लेखमा, C भाषा प्रयोग गरेर द्विआधारी सङ्ख्या देखाउने तरिकाहरूलाई आधारभूतदेखि उन्नतसम्म विस्तृत रूपमा व्याख्या गरिएको छ। तल प्रत्येक तरिकाको मुख्य बुँदाहरूलाई पुनरावलोकन गर्ने तुलना तालिका प्रस्तुत गरिएको छ:
विधि | विशेषता | फाइदा | नोक्सानी |
---|---|---|---|
बिट अपरेसन द्वारा बनाइएको कस्टम फङ्क्शन | आफै कार्यान्वयन गर्ने | लचिलोपन उच्च। इच्छित बिट चौडाइलाई समर्थन गर्न सक्छ। | कार्यान्वयनमा समय लाग्छ। |
C23 मानकको%b निर्दिष्टकर्ता | मानक ढाँचा निर्दिष्टकर्ता प्रयोग गर्नुहोस् | सरल र पढ्न सजिलो। | C23 संग अनुकूल वातावरण आवश्यक। |
थर्ड-पार्टी लाइब्रेरी | बाह्य लाइब्रेरीको उपयोग गर्नुहोस् | कार्यान्वयनको मेहनत बचत गर्न सकिन्छ। | पर्यावरण निर्भरता उत्पन्न हुन सक्छ। |
पाठकको लागि कार्य
- लेखमा प्रस्तुत गरिएको कोड उदाहरणलाई आफ्नै वातावरणमा चलाएर प्रयास गरौं। हातले काम गर्दा, द्विआधारी प्रदर्शन र बिट अपरेसनको बुझाइ गहिरो हुन्छ।
- बिट अपरेसन प्रयोग गरेर फ्ल्याग व्यवस्थापन र डिबग विधिहरूलाई वास्तविक प्रोजेक्टमा लागू गर्नुहोस्।
भविष्यको अध्ययनको लागि सल्लाह
- बिट अपरेसनको आधारभूतलाई पुनरावलोकन गर्नुहोस्
- शिफ्ट अपरेसन र तार्किक अपरेसन (AND, OR) बारे थप सिकेर, प्रभावकारी प्रोग्रामिङ कौशललाई निखार्नुहोस्।
- C23 मानकको नयाँ सुविधाहरूसँग परिचित हुनुहोस्
- C23 मानकको
%b
निर्दिष्टकर्ता प्रयोग गरेर, नवीनतम C भाषाको सुविधाहरूलाई उपयोग गरौं।
- अन्य प्रोग्रामिङ भाषासँग तुलना गर्नुहोस्
- अन्य भाषामा द्विआधारी प्रदर्शन प्रयास गर्दा, C भाषाको विशेषता र अन्य भाषासँगको भिन्नता स्पष्ट हुन्छ।