दशमलव प्रणाली में प्रति अंक कितने बिट्स [बंद]


28

मैं कंप्यूटिंग में नंबरिंग सिस्टम के बारे में लोगों के एक छोटे समूह को पढ़ाने जा रहा हूं और सोच रहा था कि दशमलव प्रणाली में प्रति अंक कितने बिट्स हैं, उदाहरण के लिए:

  • हेक्स (बेस 16) - 4 बिट्स
  • अष्टक (आधार 8) - 3 बिट्स
  • बाइनरी (बेस 2) - 1 बिट
  • दशांश (आधार 10) -?

7
अंतर्ज्ञान: लेट्स कहते हैं कि तुम क्या चाहते हैं है d, यह एक दशमलव अंकों की श्रेणी शामिल हैं 0..93*dबिट्स का अर्थ है तीन दशमलव अंक और आप सीमा से पूर्णांक का प्रतिनिधित्व करने की अनुमति देते हैं 0..999। पूरे दस बिट्स (अब बाइनरी सोचो) की एक सीमा देते हैं 0..1023। 999 1023 के काफी करीब है, फिर भी थोड़ा कम है। तो आप उम्मीद कर सकते हैं कि d10/3 से कम होना चाहिए।
कामिल मैकियोरोस्की

5
यह पोस्ट ऐसा लगता है जैसे यह सुपर यूजर की तुलना में स्टैक ओवरफ्लो पर बेहतर फिट होगा।
गार्मस्टॉन्ग

21
@gmarmstrong: मैं गणित का तर्क देता हूं। (या संभवतः SoftwareEngineering.SE)। यह सीधे एक प्रोग्रामिंग समस्या से संबंधित नहीं है।
फ्लेटर

10
@ फैलेटर: गणित निश्चित रूप से सही जगह है, क्योंकि यह मूल रूप से सूचना सिद्धांत 101 है।
मेकमा 1

7
यह नहीं जानने में कोई शर्म नहीं है, लेकिन जो नंबर सिस्टम सिखाने के लिए सबसे अच्छा व्यक्ति नहीं हो सकता है।
17

जवाबों:


96

आप जो देख रहे हैं, वह 10 के 2-आधारित लघुगणक है, जो लगभग 3.32192,094,000 की एक अपरिमेय संख्या है ...।

यह तथ्य कि आप दशमलव अंक के लिए बिट्स के पूर्णांक संख्या का उपयोग नहीं कर सकते हैं, इसका मूल कारण है कि दशमलव प्रणाली में आसानी से व्यक्त किए जाने वाले कई अंश (जैसे 1/5 या 0.2), असंभव हैं (कठिन नहीं: वास्तव में असंभव) बाइनरी में व्यक्त करने के लिए। यह महत्वपूर्ण है जब अस्थायी बिंदु अंकगणित में गोलाई त्रुटियों का मूल्यांकन किया जाता है।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
DavidPostill

20

दूसरे शब्दों में, इन प्रणालियों में एक भी अंक में कितनी जानकारी निहित है।

आधार 2 के लिए, आधार 4, आधार 8, आधार 16 और अन्य 2 एन आधारों का उत्तर स्पष्ट है क्योंकि आधार 2 एन में प्रत्येक अंक को बिल्कुल एन अंकों के साथ व्यक्त किया जा सकता है।

आप को एन 2 एन कैसे दिया जाता है ? ठीक है, आप 2-आधारित लघुगणक का उपयोग करते हैं, जो घातांक का विलोम है।

  • लॉग 2 2 = 1 (बेस 2 में 1 बिट प्रति अंक)
  • लॉग 2 4 = 2 (बेस 4 में प्रति अंक 2 बिट)
  • लॉग 2 8 = 3 (बेस 8 में प्रति अंक 3 बिट)
  • लॉग 2 16 = 4 (बेस 16 में प्रति बिट 4 अंक)

K- आधारित संख्याएँ जो K की शक्तियाँ नहीं हैं, के K- आधारित लघुगणक नहीं हैं। विशेष रूप से:

  • लॉग 2 10 = 3.321928094887362347870319429489390175864831393024580612054…

यह संख्या भ्रामक लग सकती है, लेकिन वास्तव में इसके कुछ उपयोग हैं। उदाहरण के लिए, यह एकल दशमलव अंकों का एक एन्ट्रॉपी है।

आपके मामले के लिए, हालाँकि, मुझे नहीं लगता कि यह मूल्य किसी काम का है। @ ईसाई का जवाब यह समझाने में अच्छा काम करता है कि क्यों।


8

बिट्स के विषय पर:

मुझे खेद है कि प्रश्न गलत है। आप उस तरीके से बिट्स का उपयोग नहीं करेंगे। एक बिट एक द्विआधारी अंक है । आप दशमलव संख्या 10 को बाइनरी 1010 (8 + 2) में बदल सकते हैं, इसलिए आपको दशमलव मान 10 को व्यक्त करने के लिए 4 बिट्स की आवश्यकता होगी।


२ की शक्तियाँ

आप उदाहरण के रूप में बाइनरी (2), ऑक्टल (8) और हेक्साडेसिमल (16) का उपयोग करके एक जाल में गिर गए हैं, क्योंकि ये सभी 2 की शक्तियां हैं, और इस प्रकार आप बिट्स के संदर्भ में उनके बारे में सोच सकते हैं, जबकि 10 में 2 की शक्ति नहीं है, इसलिए यह बहुत अच्छा काम नहीं करता है।


18
सवाल गुमराह नहीं है। सूचना सिद्धांत के विषय में इस तरह से बिट्स के बारे में बात करना पूरी तरह से सामान्य है। और फिर यूजीन रीक का जवाब एक अच्छा जवाब है।

2
मेरा सुझाव है कि आप बीसीडी (द्विआधारी-कोडित दशमलव) का उल्लेख करते हैं, जो आमतौर पर इलेक्ट्रॉनिक्स में 4-बिट्स द्वारा दर्शाया जाता है। व्यावहारिक रूप से, दशमलव संख्या का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले बिट्स की संख्या आमतौर पर 4 है, लेकिन यह कार्यान्वयन पर निर्भर करता है।
डेविडमनिधम

1
@DavidStockinger राइट, यह इस बात पर निर्भर करता है कि यह एक सैद्धांतिक प्रश्न है या कार्यान्वयन प्रश्न है।
davidmneedham

2
ln (10) / ln (2) सैद्धांतिक उत्तर है। 4 बिट्स संभावित कार्यान्वयन उत्तर है।
davidmneedham 15

2
@davidmneedham नहीं, अधिकांश संख्याएं बाइनरी में संग्रहीत हैं। बीसीडी का उपयोग दुर्लभ विशेष उद्देश्यों के लिए किया जाता है लेकिन अधिकांश एनकोडिंग या तो पूर्णांक या फ्लोटिंग पॉइंट दशमलव हैं। इन प्रणालियों में लॉग का उत्तर सही है, यह दी गई दशमलव लंबाई (राउंड अप) के सभी नंबरों को संग्रहीत करने के लिए न्यूनतम संख्या देता है और बताता है कि किसी दी गई संख्या बिट्स दशमलव अंकों की एक निश्चित संख्या को संग्रहीत नहीं करती है।
जैक एदले

7

बीसीडी - बाइनरी कोडेड डेसीमल 4 बिट प्रति अंकों का उपयोग करता है, हेक्साडेसिमल के समान।

https://en.wikipedia.org/wiki/Binary-coded_decimal


सिवाय इसके कि "बीसीडी" का उपयोग अक्सर 6-बिट चरित्र एन्कोडिंग को संदर्भित करने के लिए किया जाता है।
डैनियल आर हिक्स


@DanielRHicks आह, ठीक है। विकिपीडिया का कहना है कि इसका इस्तेमाल 1950 के दशक के अंत और 1960 की शुरुआत में किया गया था (यानी EBCDIC का आविष्कार होने से पहले), इसलिए मुझे शर्म नहीं आई कि मैंने इसके बारे में कभी नहीं सुना। हालाँकि मुझे अब पता चला है कि नाम EBCDIC से लिया गया था! वैसे भी, बीसीडी शब्द अभी भी एन्कोडिंग को संदर्भित करने के लिए "अक्सर उपयोग किया जाता है" नहीं है जैसा कि आप कह रहे हैं।
मिस्टर लिस्टर

3

बिट्स का उपयोग करने से 2 की शक्ति निकलती है, इस प्रकार, जैसा कि दूसरों ने कहा है कि आप 10 बिट्स को आसानी से अपव्यय के बिना बाइट्स में हिला नहीं सकते हैं। एक सामान्य समाधान हेक्साडेसिमल के अनुसार 4 बिट्स का उपयोग करना है और एएफ के रूप में प्रतिनिधित्व किए गए 6 राज्यों को बर्बाद करना है। दिलचस्प बिट इस के साथ दशमलव गणित कर रहा है - यह साफ और सरल नहीं है।

एक उपयोगी शिक्षण विचार इस बात की तुलना करने के लिए हो सकता है कि मिकी माउस ने एक गिनती प्रणाली कैसे विकसित की होगी, क्योंकि उसके पास प्रति हाथ केवल 4 उंगलियां हैं - जो स्वाभाविक रूप से एक अष्टाधारी प्रणाली की ओर जाता है।


मेरा मानना ​​है कि आप हेक्स को अपने उत्तर में हेक्स के रूप में संदर्भित करना चाहते हैं, जिसमें वायुसेना मान है
user92592

@ user92582 हाँ, ता। सही किया।
davidgo

और आप उन "बेकार" 6 राज्यों का उपयोग करके दशमलव बिंदु, ऋणात्मक, अनुक्रम टर्मिनेटर, इत्यादि को दशमलव गणित के लिए एन्कोड कर सकते हैं ... यह साफ-सुथरा नहीं बल्कि सरल है? बस कुछ कोड लिखने के लिए जो हम छोटे बच्चों को सिखाते हैं: पी
कैथार

@kaithar - मुझे विश्वास नहीं है कि आप जो प्रस्ताव दे रहे हैं, वह मान्य है, क्योंकि उन कार्यों में से किसी एक को पूर्ण या अधिक की आवश्यकता होगी - जो आपके पास उपलब्ध नहीं है।
दाविगो 18

1
कोई विचार नहीं है जहाँ "10 बिट्स" फॉर्म आ रहे हैं। 10 बिट्स = 1024 मान। एक दशमलव अंक में केवल 10 संभावित मान हैं।
MSalters

3

यह एक निरीक्षण हो सकता है लेकिन यह इस बात पर निर्भर करता है कि आप किस प्रश्न को पूछ रहे हैं।
(और जवाब मूल रूप से अष्टाधारी या षट्कोण है)

मैं भिन्नात्मक बिट्स को बिट्स नहीं मानता क्योंकि व्यावहारिक उपयोग बिट्स में अंश नहीं होते हैं।

Q1: एक दशमलव अंक में आप कितने बिट्स का प्रतिनिधित्व कर सकते हैं ?

A1: आप एक एकल दशमलव अंक में जानकारी के 3 बिट्स का प्रतिनिधित्व कर सकते हैं:

सबसे आम योजना सीधे बाइनरी होगी जहां रैपिंग के साथ 0 = 8 = 000 और 1 = 9 = 001 होगा। लेकिन आप किसी भी योजना का उपयोग कर सकते हैं ऐसा कुछ भी नहीं है जो कहता है कि बिट्स को दशमलव अंकों में सांकेतिक शब्दों में बदलना है।

  • 0: 000
  • 1: 001
  • 2: 010
  • 3: 011
  • 4: 100
  • 5: 101
  • 6: 110
  • 7: 111
  • 8: 000 <- रैपिंग (या अप्रयुक्त)
  • 9: 001 <- रैपिंग (या अप्रयुक्त)

या

Q2: दशमलव अंक का प्रतिनिधित्व करने में कितने बिट्स लगते हैं?

A2: सभी दशमलव अंकों का प्रतिनिधित्व करने के लिए आपको कम से कम 4 बिट्स चाहिए। कुछ बर्बाद या लपेटने के साथ।

फिर से सबसे आम योजना रैपिंग के साथ सीधे बाइनरी होगी लेकिन आप किसी अन्य योजना का उपयोग कर सकते हैं।

  • 0: 0000
  • 1: 0001
  • 2: 0010
  • 3: 0011
  • 4: 0100
  • 5: 0101
  • 6: 0110
  • 7: 0111
  • 8: 1000
  • 9: 1001
  • 0: 1010 <- रैपिंग (या अप्रयुक्त)
  • 1: 1011 <- रैपिंग (या अप्रयुक्त)
  • 2: 1100 <- रैपिंग (या अप्रयुक्त)
  • 3: 1101 <- रैपिंग (या अप्रयुक्त)
  • 4: 1110 <- रैपिंग (या अप्रयुक्त)
  • 5: 1111 <- रैपिंग (या अप्रयुक्त)

2

आधार 1024 में, प्रत्येक प्रतीक 10 बिट्स है। तीन दशमलव अंकों में आधार 1000 में एक अंक के समान जानकारी होती है, जो 1024 से थोड़ा कम है। इसलिए, एक दशमलव अंक 10/3 बिट्स से थोड़ा कम है। यह अनुमान 3.333333 ... देता है, जबकि सटीक संख्या 3.321928 है ...


2
  • हेक्स (बेस 16) - 4 बिट्स
  • अष्टक (आधार 8) - 3 बिट्स
  • बाइनरी (बेस 2) - 1 बिट
  • दशमलव (आधार 10) - 3 1/3 बिट्स।
    2 10 = 1,024
    10 3 = 1,000
    2 20 = 1,048,576
    10 6 = 1,000,000
    3 अंकों के आधार में 10 तक 999 आधार में 10 बिट्स में हो सकते हैं। आधार में
    6 अंकों के 10 से 999,999 तक आधार में 20 बिट्स में आयोजित किया जा सकता है 2.
    यह किलोबाइट्स, मेगाबाइट्स का विचार था, और गीगाबाइट्स की उत्पत्ति हुई थी।

यह वास्तव में 3 1/3 से थोड़ा कम है ... आपका उत्तर थोड़ा अस्पष्ट है, और सुझाव है कि 999 तक की संख्या 0-1023 के बीच की संख्या के बजाय संग्रहीत की जा सकती है, थोड़ा भ्रामक है।
wizzwizz4

0

डिस्क्लेमर - मैं एक सूचना सिद्धांतकार नहीं हूं, बस एक कोड बंदर हूं जो मुख्य रूप से सी और सी ++ (और इस प्रकार, निश्चित-चौड़ाई प्रकारों के साथ) काम करता है, और मेरा जवाब उस विशेष दृष्टिकोण से होने वाला है।

एकल दशमलव अंक का प्रतिनिधित्व करने के लिए औसतन 3.2 बिट्स लगते हैं - 7 के माध्यम से 0 को 3 बिट्स में दर्शाया जा सकता है, जबकि 8 और 9 को 4. (8*3 + 2*4)/10 == 3.21 की आवश्यकता होती है ।

यह जितना लगता है उससे कम उपयोगी है। एक बात के लिए, आप स्पष्ट रूप से एक बिट के अंश नहीं है। दूसरे के लिए, यदि आप मूल पूर्णांक प्रकारों का उपयोग कर रहे हैं (जैसे, BCD या BigInt नहीं), तो आप दशमलव अंकों (या उनके बाइनरी समकक्षों) के अनुक्रम के रूप में मानों को संग्रहीत नहीं कर रहे हैं। 8 बिट प्रकार कुछ मानों को संग्रहीत कर सकता है जो 3 दशमलव अंकों तक ले जाते हैं, लेकिन आप 8 बिट्स में सभी 3-दशमलव अंकों के मूल्यों का प्रतिनिधित्व नहीं कर सकते हैं - सीमा है [0..255]। आप [256..999]केवल 8 बिट्स में मानों का प्रतिनिधित्व नहीं कर सकते ।

जब हम मूल्यों के बारे में बात कर रहे हैं , तो हम दशमलव का उपयोग करेंगे यदि आवेदन इसकी अपेक्षा करता है (जैसे, एक डिजिटल बैंकिंग एप्लिकेशन)। जब हम बिट्स के बारे में बात कर रहे हैं , तो हम आमतौर पर हेक्स या बाइनरी का उपयोग करेंगे (मैं लगभग कभी ऑक्टल का उपयोग नहीं करता हूं क्योंकि मैं सिस्टम पर काम करता हूं जो 8-बिट बाइट्स और 32-बिट शब्दों का उपयोग करता है, जो 3 से विभाज्य नहीं हैं)।

दशमलव में व्यक्त किए गए मान बाइनरी अनुक्रमों पर सफाई से मैप नहीं करते हैं। दशमलव मान लें 255। प्रत्येक अंक की बाइनरी समकक्ष होगा 010, 101, 101। फिर भी, मूल्य 255का द्विआधारी प्रतिनिधित्व है 11111111। द्विआधारी अनुक्रम के मूल्य में दशमलव के किसी भी अंक के बीच कोई पत्राचार नहीं है । लेकिन हेक्स अंकों के साथ एक सीधा पत्राचार है - F == 1111ताकि मान को FFहेक्स के रूप में दर्शाया जा सके ।

यदि आप एक ऐसी प्रणाली पर हैं जहां 9-बिट बाइट्स और 36-बिट शब्द आदर्श हैं, तो ऑक्टल अधिक समझ में आता है क्योंकि बिट्स समूह स्वाभाविक रूप से थ्रस्ट्स में होता है।


  1. दरअसल, प्रति अंक औसत 0 से छोटा होता है और 1 को केवल एक बिट की आवश्यकता होती है, जबकि 2 और 3 को केवल 2 बिट्स की आवश्यकता होती है। लेकिन, व्यवहार में, हम 7 से 3 बिट्स लेने के लिए 0 पर विचार करते हैं। बस जीवन को बहुत तरीकों से आसान बनाता है।


4
यह इतना आसान नहीं है; उदाहरण के लिए, 3-या-4 बिट एन्कोडिंग यह बताने के लिए पर्याप्त नहीं है कि क्या 1001001होना चाहिए 91या क्या होना चाहिए 49

@ हर्किल: फिर से, मेरा दृष्टिकोण निश्चित-चौड़ाई पूर्णांक प्रकारों का उपयोग कर रहा है - 1001001नक्शे 73( 64 + 8 + 1)। मैं द्विआधारी कोडित दशमलव अंकों के अनुक्रम के रूप में इसकी व्याख्या नहीं करता हूं। यदि यह बीसीडी माना जाता है, जिसे प्रति अंक 4 बिट का उपयोग करना चाहिए, तो हमें एक अग्रणी 0बिट मान लेना चाहिए , इसलिए यह होना चाहिए 49
जॉन बोडे

2
मैं सिर्फ यह बताना चाह रहा था कि चर-लंबाई के एनकोडिंग उतने सरल नहीं हैं जितने आप उन्हें बनाना चाहते हैं; आपको यह बताने की जरूरत है कि एक प्रतीक कहां समाप्त होता है और दूसरा शुरू होता है। इसलिए आप यह नहीं कह सकते कि आप चार बिट्स के साथ 8 और 9, तीन के साथ 4-7, दो के साथ 2-3 और एक के साथ 0-1 का प्रतिनिधित्व कर सकते हैं। और आप देख सकते हैं कि 3.2आपको प्राप्त आंकड़ा वास्तव में सूचना के सिद्धांत का उल्लंघन करता है log(10)/log(2)

@ हर्किल: मैं कुछ भी सरल बनाने की कोशिश नहीं कर रहा था, न ही मैं किसी भी तरह के एन्कोडिंग के बारे में बात कर रहा था। 32-बिट पूर्णांक में प्रतिनिधित्व किया जा सकने वाला सबसे बड़ा मान 10 दशमलव अंकों (3.2 बिट प्रति अंक) है, लेकिन किसी भी अंक के द्विआधारी एन्कोडिंग और मूल्य के द्विआधारी एन्कोडिंग के बीच कोई पत्राचार नहीं है। यदि आप दशमलव अंकों के लिए किसी प्रकार के बाइनरी कोडिंग का उपयोग कर रहे हैं, तो या तो चौड़ाई को एक ला बीसीडी तय किया जाना चाहिए , या आपको किसी प्रकार के हफ़मैन कोडिंग का उपयोग करना होगा, जिसकी मैं वकालत नहीं कर रहा हूं।
जॉन बोडे

1
इस योजना के साथ समस्या यह है कि आप एक अतिरिक्त बिट को भूल गए जो आपको इंगित करने की आवश्यकता है कि 3 या 4 बिट्स का पालन करें। और दशमलव अंक प्रति 4.2 बिट्स की औसत लंबाई के साथ, यह बीसीडी से भी बदतर है
एमएसएलटर्स

0

यदि मैं यह सिखा रहा था, तो मैं पहले बताऊंगा कि एक संख्या (अंकों की श्रृंखला के रूप में व्यक्त की गई है)। अर्थात, दाएँ से बाएँ, आधार n मानकर, एक * n ^ 0 + b * n ^ 1 + c * n ^ 2 ... z * n ^ y।

फिर समझाएं कि 10 ^ 3 लगभग 2 ^ 10. के बराबर है। यह सटीक नहीं है और कंप्यूटर में इसका कारण है, हम अक्सर यह नहीं जानते कि 2k का वास्तव में क्या मतलब है (क्या यह 2,000 या 2,048 है?) यह त्वरित सन्निकटन के लिए काफी अच्छा काम करता है। 2 ^ 16 लगभग 2 ^ (16 - 10) * 1,000, या 2 ^ 6 (64) * 1,000 या 64,000 है। हकीकत में, यह 65,536 है, लेकिन अगर आप एक प्रतिशत के आसपास होने का बुरा नहीं मानते हैं, तो यह त्वरित सन्निकटन के लिए काफी अच्छा काम करता है।


हालांकि यह एक चतुर अंतर्दृष्टि है और ओपी के पाठ्यक्रम में एक मूल्यवान योगदान है, यह सवाल का जवाब नहीं है।
स्कॉट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.