What is the 2s complement in C
What is the 2s complement in C? -C में 2s पूरक क्या है?
What is the 2s complement in C
C में 2s पूरक C में 1s पूरक से उत्पन्न होता है। जैसा कि हम जानते हैं कि बाइनरी संख्या का 1s पूरक बिट 1 से 0 और 0 से 1 में परिवर्तित करके बनाया गया है; एक द्विआधारी संख्या का 2s पूरक एक द्विआधारी संख्या के 1s पूरक में एक जोड़कर उत्पन्न होता है।
संक्षेप में, हम कह सकते हैं कि सी में 2 एस पूरक को सी और एक में पूरक के योग के रूप में परिभाषित किया गया है।
ऊपर दिए गए आंकड़े में, द्विआधारी संख्या 00010100 के बराबर है, और इसके पूरक की गणना बिट 1 से 0 और 0 से 1 को इसके विपरीत बदलकर की जाती है। इसलिए, एक का पूरक 11101011 हो जाता है। एक के पूरक की गणना करने के बाद, हम दोनों के पूरक की गणना एक के पूरक में 1 जोड़कर करते हैं, और इसका परिणाम 11101100 है।
आइए 2s पूरक का एक प्रोग्राम बनाएं।
#include <stdio.h>
int main()
{
int n; // variable declaration
printf("Enter the number of bits do you want to enter :");
scanf("%d",&n);
char binary[n+1]; // binary array declaration;
char onescomplement[n+1]; // onescomplement array declaration
char twoscomplement[n+1]; // twoscomplement array declaration
int carry=1; // variable initialization
printf("\nEnter the binary number : ");
scanf("%s", binary);
printf("%s", binary);
printf("\nThe ones complement of the binary number is :");
// Finding onescomplement in C
for(int i=0;i<n;i++)
{
if(binary[i]=='0')
onescomplement[i]='1';
else if(binary[i]=='1')
onescomplement[i]='0';
}
onescomplement[n]='\0';
printf("%s",onescomplement);
printf("\nThe twos complement of a binary number is : ");
// Finding twoscomplement in C
for(int i=n-1; i>=0; i--)
{
if(onescomplement[i] == '1' && carry == 1)
{
twoscomplement[i] = '0';
}
else if(onescomplement[i] == '0' && carry == 1)
{
twoscomplement[i] = '1';
carry = 0;
}
else
{
twoscomplement[i] = onescomplement[i];
}
}
twoscomplement[n]='\0';
printf("%s",twoscomplement);
return 0;
}
Output:-
What is the 2s complement in C
उपरोक्त कार्यक्रम का विश्लेषण,
1-सबसे पहले, हम बिट्स की संख्या इनपुट करते हैं, और यह 'n' वेरिएबल में स्टोर हो जाता है।
2-बिट्स की संख्या दर्ज करने के बाद, हम कैरेक्टर एरे की घोषणा करते हैं, यानी, चार बाइनरी [एन + 1], जिसमें बाइनरी नंबर होता है। 'एन' बिट्स की संख्या है जिसे हमने पिछले चरण में दर्ज किया था; यह मूल रूप से सरणी के आकार को परिभाषित करता है।
3-हम दो और सरणियों की घोषणा करते हैं, अर्थात, onecomplement[n+1], और twoscomplement[n+1]। onecomplement[n+1] सरणी में बाइनरी संख्या का पूरक होता है जबकि twoscomplement[n+1] सरणी में बाइनरी संख्या के दो पूरक होते हैं।
4-कैरी वेरिएबल को इनिशियलाइज़ करें और इस वेरिएबल को 1 मान असाइन करें।
5-घोषणाओं के बाद, हम बाइनरी नंबर इनपुट करते हैं।
6-अब, हम केवल एक बाइनरी संख्या के पूरक की गणना करते हैं। ऐसा करने के लिए, हम एक लूप बनाते हैं जो पूरे बाइनरी ऐरे में पुनरावृति करता है, for(int i=0;i<n;i++)। लूप के लिए, स्थिति की जांच की जाती है कि बिट 1 या 0 है। यदि बिट 1 है तो एक पूरक है [i] = 0 अन्य पूरक [i] = 1। इस तरह, एक बाइनरी नंबर का पूरक उत्पन्न होता है।
7-किसी के पूरक की गणना करने के बाद, हम एक द्विआधारी संख्या के 2s पूरक उत्पन्न करते हैं। ऐसा करने के लिए, हम एक लूप बनाते हैं जो अंतिम तत्व से प्रारंभिक तत्व तक पुनरावृत्त होता है। लूप के लिए, हमारे पास तीन शर्तें हैं:
8-अगर बिट ऑफ़ वनसम्प्लीमेंट [i] 1 है और कैरी का मान 1 है तो हम 0 को टू कॉम्प्लीमेंट [i] में डालते हैं।
9-यदि बिट का पूरक [i] 0 है और कैरी का मान 1 है तो हम 1 को दो पूरक [i] में और 0 को कैरी में रखते हैं।
10-यदि उपरोक्त दो शर्तें गलत हैं, तो एक पूरक [i] दो पूरक [i] के बराबर है।
- What is Bitwise Operator in C Language
- What is Conditional Operator in C Language
- What is Compile time vs Runtime In C Language
- What is Programming Errors in C Language