सी मानक नकारात्मक हस्ताक्षरित संख्याओं का प्रतिनिधित्व करने के किसी विशेष तरीके को अनिवार्य नहीं करता है।
अधिकांश कार्यान्वयनों में जिनका आप सामना करने की संभावना रखते हैं, नकारात्मक हस्ताक्षरित पूर्णांक को दो के पूरक कहा जाता है । नकारात्मक हस्ताक्षरित संख्याओं को संग्रहीत करने का दूसरा प्रमुख तरीका किसी का पूरक कहा जाता है ।
एन-बिट संख्या के दो के पूरक के x
रूप में परिभाषित किया गया है 2^N - x
। उदाहरण के लिए, 8 बिट के दो के पूरक 1
है 2^8 - 1
, या 1111 1111
। 8-बिट 8
का दो का पूरक है 2^8 - 8
, जो बाइनरी में है 1111 1000
। यह भी के बिट्स flipping x
और एक जोड़कर गणना की जा सकती है । उदाहरण के लिए:
1 = 0000 0001
~1 = 1111 1110
~1 + 1 = 1111 1111
-1 = 1111 1111
21 = 0001 0101
~21 = 1110 1010
~21 + 1 = 1110 1011
-21 = 1110 1011
N- बिट संख्या x के पूरक को मूल रूप से उसके सभी बिट्स फ़्लिप के साथ x के रूप में परिभाषित किया गया है।
1 = 0000 0001
-1 = 1111 1110
21 = 0001 0101
-21 = 1110 1010
किसी के पूरक पर दो के पूरक के कई फायदे हैं। उदाहरण के लिए, इसमें 'नकारात्मक शून्य' की अवधारणा नहीं है, जो अच्छे कारण के लिए कई लोगों को भ्रमित कर रहा है। जोड़, गुणा और घटाव हस्ताक्षरित पूर्णांक दो के पूरक के साथ कार्यान्वित के साथ ही काम करता है, जैसा कि वे अहस्ताक्षरित पूर्णांक के साथ भी करते हैं।