Saturday, August 10, 2013

3. దశాంశ, ద్వియాంశ, షోడశాంశ లెక్కింపు పద్ధతుల



వేమూరి వేంకటేశ్వరరావు

కంప్యూటర్ రంగంలో పని చేసే వారితో మాట్లాడుతున్నప్పుడు భాషా పరమైన ఇబ్బందులు కొన్ని ఉన్నాయి; వారి భాష ఏమిటో మనకి అర్థం అయి చావదు. మనకి సైన్సుతో పరిచయం ఉన్నా వాళ్ల లోకం వాళ్లది; పైపెచ్చు వాళ్ల గోల మనకి అర్థం కాకపోతే మనని నిరక్షరాశ్యులులా చూస్తారు. చిన్న ఉదాహరణ ఇస్తాను.

ఈ రోజుల్లో కిలొ అనే మాట అందరికీ పరిచయమైనదే. కిలో పంచదార, కిలో చింతపండు, వగైరాలు నిత్యం వాడుకునే మాటలే. “కిలో” అంటే “వెయ్యి” కాబట్టి కిలోమీటరు అంటే వెయ్యి మీటర్లు, కిలోగ్రాము అంటే వెయ్యి గ్రాములు అని మనం అర్థం చేసుకుంటున్నాం. ఇలాగే వెయ్యి కిలోలు ఒక “మెగా.” ఈ మెగా “బాగా పెద్ద” అన్న అర్థంలో వాడుతున్నాం (ఉ. మెగా స్టార్) కాని కచ్చితంగా “ఇంత” అన్న అర్థం ఇంకా తెలుగు నోట నలగ లేదు. ఒక మెగా గ్రాము అంటే మిలియను (1,000,000) గ్రాములు. ఇదే విధంగా వెయ్యి మిలియన్లు ఒక బిలియను. ఈ బిలియనుని సూచించడానికి “గిగా” అనే పూర్వ ప్రత్యయం వాడతారు. సైన్సుతో ఏపాటి పరిచయం ఉన్నా ఈ పూర్వ ప్రత్యయాలతో పరిచయం ఉండి తీరుతుంది. కనుక కిలొ అంటే వెయ్యి, మెగా అంటే మిలియను, గిగా అంటే బిలియను అని అర్థం చేసుకుందాం.

కంప్యూటర్ రంగంలోనే కాదు ఆధునిక విజ్ఞాన రంగంలో లక్షలకి, కోట్లకి స్థానం లేదు. మనం ఇంగ్లీషు వ్యామోహంలో పడి పాశ్చాత్యులని పరిపూర్ణంగా అనుకరించేసినా బాగుండిపోయేది; లక్షల దగ్గరకి, కోట్ల దగ్గరకి వచ్చేసరికి భారతీయ పద్ధతినే పట్టుకు వేల్లాడుతున్నాం. లేకపోతే ఏమిటి చెప్పండీ? నాలుగు వందల ఏభై లక్షల కోట్లా? మా మనవడు “ఇరవై తొమ్మిది, ఇరవై పది, ఇరవై పదకొండు,…” అని లెక్కపెట్టినట్లు!

పరిస్థితి ఇలా కుదుటపడి ఉండగా పిలవని పేరంటంలా కంప్యూటర్ వాళ్లు వచ్చి పడ్డారు. కంప్యూటర్లలో లెక్కలన్నీ దశాంశ పద్ధతిలో నడవవు – వాళ్లదంతా ద్వియాంశ లోకం. దశాంశ పద్ధతి (decimal system) లో ఎలా లెక్క పెడతాం? 0, 1, 2, 3, …, 8, 9 అని లెక్క పెట్టేసరికి మన దగ్గర ఉన్న పది అంకెలూ ఒక సారి లెక్కపెట్టడం అయిపోయింది కనుక ఆ విషయాన్ని జ్ఞప్తికి తెచ్చుకుంటూ 1 వేసి దాని తరువాత మళ్లా సున్న, ఒకటి, రెండు అనుకుంటూ 10, 11, 12, .., 18, 19 వేస్తాం. వేసి, వీటిని పది, పదకొండు, పన్నెండు, … అన్న పేర్లతో పిలుస్తాం. ఇప్పటికి రెండు సార్లు లెక్కపెట్టడం అయింది అని గుర్తు పెట్టుకోడానికి 2 వేసి మళ్లా సున్న నుండి తొమ్మిది వరకు 20, 21, 22,.. 28, 29 అని వేస్తాం. వేసి, వీటిని ఇరవై, ఇరవై ఒకటి, ఇరవై రెండు, ఇరవై మూడు, … అన్న పేర్లతో పిలుస్తాం. ఈ లేఖన చిహ్నాలు, ఈ పేర్లు దశాంశ పద్ధతికే పరిమితం అన్న మాట మన మనస్సులో ఉండదు; ఎందుకంటే తరతరాలబట్టీ మనం ఈ దశాంశ పద్ధతి తప్ప మరొక పద్ధతిలో లెక్కించ లేదు.

కాని కంప్యూటర్‌కి రెండే రెండు అంకెలు బోధపడతాయి: 0, 1. రెండే రెండు లేఖన చిహ్నాలు ఉన్న పద్ధతి కనుక దీనిని ద్వియాంశ పద్ధతి (binary system) అనొచ్చు. ఈ పద్ధతిలో 0, 1 ఒక సారి లెక్కపెట్టడం అయిన తరువాత 1 వేసి, దాని పక్క సున్న, ఒకటి వేస్తే 10, 11 వస్తాయి. కనుక దశాంశ లోకంలో 2 ద్వియాంశ లోకంలో 10, దశాంశ లోకంలో 3 ద్వియాంశ లోకంలో 11. దీని తరువాత వచ్చే సంఖ్యలు 100, 101, 110, 111. ఈ నాలుగు ద్వియాంశ సంఖ్యలు 4, 5, 6, 7 అనే దశాంశ అంకెలతో సమానం. ఇలా లెక్కిస్తూ వెళితే దశాంశ పద్ధతిలో మనం వాడే 10 (పది) ద్వియాంశలో 1010 అవుతుంది, దశాంశలో మనం వాడే 11 (పదకొండు) ద్వియాంశలో 1011 అవుతుంది, దశాంశలో 15 (పదిహేను) ద్వియాంశలో 1111 అవుతుంది. చూశారా, ఇక్కడ నేను కుండలీకరణాలలో “పది”, “పదకొండు” అని రాయకపోతే 10 అనే లేఖన చిహ్నం దశాంశలో పదో, ద్వియాంశలో రెండో చెప్పడం కష్టం.

ఇక్కడ ఇలా పాఠం చెప్పుకుంటూ పోతే చాల సేపు పడుతుంది కనుక, కథనాన్ని టూకీగా తెముల్చుతాను. ద్వియాంశలో పది స్థానాలు ఆక్రమించే సంఖ్యని పరిశీలిద్దాం. ఈ పది స్థానాలలో మనం రాయగలిగే పెద్ద సంఖ్య 1111 1111 11. దశాంశ పద్ధతిలో దీని విలువ 1023. సున్నతో కలుపుకుని మొత్తం 1024. కనుక పది స్థానాల్లో ఇమిడే ద్వియాంశ సంఖ్యలన్నిటిని లెక్కపెడితే “ఒక వెయ్యి ఇరవై నాలుగు” సంఖ్యలు ఉంటాయి. మనమే బద్ధకిష్టులం అనుకుంటే మన కంటే బద్ధకిష్టులు కంప్యూటర్లతో పనిచేసేవాళ్లు. “ఒక వెయ్యి ఇరవై నాలుగు” అనడానికి బద్ధకించి “ఒక వెయ్యి” అనో లేదా “ఒక కిలో” అనో అనడం మొదలుపెట్టేరు. వాళ్లకి తెలుసు; వాళ్లు ఒక కిలో అంటే నిజంగా అది 1024 అని. కాని మనందరికీ ఆ విషయం తెలియాలని లేదుగా!

అందరికీ తెలియకపోయినా ఈ తేడా విశాఖ జిల్లా ప్రాంతాలలో పెరిగిన నాకు తెలుసు – చిన్నప్పటినుండీ తెలుసు. విశాఖ జిల్లాలో – నా చిన్నతనంలో – పరక మామిడి పళ్లు కొంటే 14 వచ్చేవి. కనుక పాతిక అంటే 28. వంద అంటే 112. బ్రిటిష్ వాడు మనకి తులామానం నేర్పినప్పుడు ఇదే తర్కంతో “హండ్రెడ్‌వెయిట్” అంటే 112 పౌనులు అన్నాడు కదా. కనుక బ్రిటిష్ వాళ్లు “వంద” అన్నప్పుడు అది 112 అయితే మనం కిక్కురుమనకుండా ఊరుకున్నప్పుడు కంప్యూటర్ వాళ్లు “కిలో” అన్నప్పుడు దాని అర్థం 1024 అయితే కిక్కురు మననేల?

వింత, విడ్డూరము లేకపోయినా వైజ్ఞానిక రంగంలో మాటలకి నిర్ధిష్టమైన అర్థాలు లేక పోతే ఇబ్బందులు తప్పవు. ఇక్కడ మనం 1000 కి 1024 కీ మధ్య పెద్ద తేడా లేదు కనుక ఏదోలే అని సరిపెట్టుకుంటాం. కాని మిలియన్ దగ్గరకి వచ్చేసరికి ఈ తేడా పెరుగుతుంది. సామాన్యులకి “మెగా” అంటే “కిలో కిలోలు” లేదా మిలియను, లేదా 1,000,000. కంప్యూటర్ పరిభాషలో “మెగా” అంటే “కిలో కిలోలే” కాని వాళ్ల కిలో 1024 కనుక కంప్యూటర్ వాళ్లు మెగా అంటే 1024 ని 1024 తో గుణించగా వచ్చిన 1, 048, 576. ఇదీ మిలియనుకి దరిదాపుల్లోనే ఉంది కనుక పరవాలేదనుకోవచ్చు, కాని “కంప్యూటర్ మెగా” మామూలు మెగా కంటె పెద్ద సంఖ్య. కాంప్యూటర్ల వాడకం పెరగడంతో కంప్యూటర్ పరిభాష వాడుకలో జొరబడింది. కనుక కంప్యూటర్ వాళ్లు “64 కిలోబైట్‌లు” అంటే వాళ్ల ఉద్దేశం 64 x 1, 024  "బైట్‌"లు అని అన్వయం చెప్పుకోవాలి తప్ప 64 x 1,000 అని కాదు. కాని అదే కంప్యూటర్ వాళ్లు “28.8 కిలోబిట్ల మోడెం” అంటే మాత్రం క్షణానికి 28.8 x 1,000 ద్వింకములు పంపే మోడెం అనే అర్థం కాని 28.8 x 1024 = 29,491 ద్వింకములు అని కాదు. కనుక కిలో, మెగా, గిగా మొదలైన పూర్వ ప్రత్యయాలు విన్నప్పుడు అవి ఎవరు, ఏ సందర్భంలో అంటున్నారో తెలిస్తే తప్ప వాటి నిజమైన విలువ తెలియదు. అదే విధంగా కంప్యూటర్ వాళ్లు మాట్లాడేటప్పుడు “బిట్లు” అన్న మాటకి, “బైట్లు” అన్నమాటకీ మధ్య తేడా ఉంటుంది. సాధారణంగా సమాచారాన్ని నిల్వ చేసే సామర్ధ్యాన్ని గురించి చెబుతూ 10 KB అంటే అది “పది కిలో బైట్లు,” కాని సమాచారాన్ని రవాణా చేసే వేగాన్ని చెప్పేటప్పుడు 10 kb అంటే అది “పది కిలొ బిట్లు” అని అర్థం చేసుకోవాలి. ఇక్కడ పెద్దబడిలో B “బైట్లు” (అష్టాలు) అని చెబుతోంది, చిన్న బడిలో b “బిట్లు” (ద్వింకములు) అని చెబుతోంది. దృష్టి దోషం లేకుండా చూడాలి, శ్రవణ దోషం లేకుండా వినాలి.

పై పేరాలో బిట్లు, బైట్లు అన్న మాటలు వాడేను కనుక వాటి అర్థాలు కూడ చెబుతాను. నాలుగు చింతపిక్కలని పుంజీ అనిన్నీ, ఎనిమిది చింతపిక్కలని “గుర్రం” అనిన్నీ అన్నట్లే నాలుగు ద్వియాంశ అంకెలని “నిబుల్” (nibble) అనిన్ని ఎనిమిది ద్వియాంశ అంకెలని “బైట్”(byte) అనిన్నీ అంటారు. ఒకే ఒక ద్వియాంశ అంకె ని ఇంగ్లీషులో “బిట్” (bit) అంటారు. ఈ బిట్ అనే మాట binary digit అనే ఇంగ్లీషు మాటలకి సంkshiప్త రూపం. అదే ధోరణిలో మనం కూడ “ద్వియాంశ అంకము” అన్న మాటలని “ద్వింకము” అని కుదించి దీనిని bit కి బదులు వాడదాం. నిబుల్ ని (వాడకం లోంచి పోయింది కాని) మనం పుంజీ అందాం. బైట్ అంటే ఎనిమిది ద్వింకములు కనుక దానిని అష్టా అందాం. ఇంగ్లీషులో బైట్ (byte) అన్నా ఆక్టెట్ (octet) అన్నా అర్థం ఒక్కటే. ఆక్టెట్ అంటే ఎనమండుగురు అని కాని ఎనిమిది అంశాలు ఉన్నది అని కాని అర్థం కనుక దానిని “అష్టా” అంటే అర్థానికి దగ్గరగా ఉంటుంది. చింతపిక్కలతోటీ, గవ్వలతోటీ ఆటలు ఆడే వారికి అష్టా సుపరిచితమే!

కంప్యూటర్‌లో వాడడానికి ద్వియాంశ పద్ధతి నప్పుతుంది కాని, మానవులకి ద్వియాంశ పద్ధతి వల్ల కొన్ని చిక్కులు ఉన్నాయి. ఉదాహరణకి 33 అనే సంఖ్యనే తీసుకుందాం. దీన్ని ఆ పళంగా కంప్యూటరుకి ఇస్తే జడ్డిమాలోకానికి అర్థం కాదు. అందుకని ఆ 33 ని 100001 అని ఒకట్లు, సున్నలు ఉన్న పద్ధతిలో రాసి కంప్యూటర్‌కి ఇవ్వాలి. ఇదే విధంగా దశాంశ పద్ధతిలో ఉన్న 181 అనే సంఖ్యని ద్వియాంశ పద్ధతి (binary system) ప్రకారం 10110101 అని రాయాలి. పెద్దాపురం చాంతాడులా ఇలా పొడుగ్గా ఉన్న ద్వియాంశ సంఖ్యలని రాయడం కొంచెం కష్టమే – అందులో బద్ధకిష్టులకి మరీ కష్టం. కష్టపడి రాసినా తప్పులు దొర్లే అవకాశాలు ఎక్కువ. ఈ కష్టం నుండీ గట్టెక్కడానికి షోడశాంశ పద్ధతి (hexadecimal system) అందుబాటులోకి వస్తుంది. ఈ పద్ధతిలో అంకెలకి పదహారు గుర్తులు వాడతారు. అవి: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. ఇక్కడ A అనేది 9 (అంటే 1001) తరువాత వచ్చే 1010 అనే ద్వియాంశ సంఖ్యకి గుర్తు. దీని తరువాత వచ్చే 1011 కి బదులు B అని రాస్తాం. ఈ పద్ధతి మనకి ఇక్కడ ఎలా ఉపయోగపడుతుందో చూపెడతాను. ఉదాహరణకి 181 ని 10110101 అని రాయడానికి బదులు ఈ సంఖ్యలో ఉన్న ద్వింకములని (binary digits ని) కుడి నుండి ఎడమకి వెళుతూ పుంజీల కింద విడగొట్టి, ఇలా – 1011 0101 – రాస్తాం. ఇప్పుడు 1011 కి బదులు B అనిన్నీ 0101 కి బదులు 5 అనిన్నీ రాస్తే దశాంశ పద్ధతిలో ఉన్న 181 కాస్తా షోడశాంశలో B5 అవుతుంది. ఇది షోడశాంశ (hexadecimal) అన్న విషయం మరచిపోకుండా ఉండడానికి అప్పుడప్పుడు దీనిని B5h అని కూడ రాస్తూ ఉంటారు. ఈ చిటకా కంప్యూటర్ రంగంలో తరచు వాడతారు.

కనుక రెండు షోడశాంశలో ఉన్న అంకెలు ఒక బైట్‌తో సమానం. అంటే, B5h అనేది ఒక బైట్ స్థలంలో ఇముడుతుంది. ఒక కొట్టు ఎంత పెద్దదో చెప్పడానికి “ఈ కొట్టులో 20 కిలోబైట్లు పడతాయి” అన్నప్పుడు ఆ కొట్లో 20x1024 = 20,480 బైట్లు పడతాయని మనం అర్థం చేసుకోవాలి. బైటు ఒక్కంటికి ఒక ఇంగ్లీషు అక్షరం కనుక ఆ కొట్లో 20,480 ఇంగ్లీషు అక్షరాలు పడతాయి. ఇంగ్లీషు అక్షరాలని, అంకెలని కంప్యూటర్‌లో దాచడానికి సర్వసాధారణంగా ASCII కోడు వాడతారు. ఈ కోడులో ఒక బైటు పొడుగున్న జాగాలో ఒక అక్షరాంకం (alphanumeric character) ఇముడుతుంది.

కాని తెలుగు అక్షరాలని కొట్లో దాచడానికి (లేదా రాయడానికి) “యూనీకోడు” (unicode) వాడాలి. ఇక్కడ అక్షరం ఒక్కంటికి 4 బైట్లు కావలసి ఉంటుంది. కనుక ఆ కొట్లో 10,240 తెలుగు వర్ణాలు పడతాయి.



3 comments:

  1. కాని అదే కంప్యూటర్ వాళ్లు “28.8 కిలోబిట్ల మోడెం” అంటే మాత్రం క్షణానికి 28.8 x 1,000 ద్వింకములు పంపే మోడెం అనే అర్థం కాని 28.8 x 1024 = 29,491 ద్వింకములు అని కాదు అర్థం.
    ఇది కొంచెం confuse గా ఉంది

    ReplyDelete
  2. క్షమించాలి. మీకు అర్థం అయే విధంగా చెప్పడానికి మరొక సారి ప్రయత్నిస్తాను.
    "కిలో" అంటే మామూలుగా 1000 అని అర్థం.
    కంప్యూటర్ రంగం కాకుండా టెలిఫోను, టెలిగ్రాఫు వంటి వార్తా ప్రసార సౌకర్యాలని "కమ్యూనికేషన్స్" రంగం అంటారు. వాళ్ల ప్రపంచంలో కూడ "కిలో" అంటే 1000.
    కాని కాని కంప్యూటర్ రంగంలో మాత్రం "కిలో" అంటే 1024.
    వీరిద్దరూ ఎవరి రంగాల్లో వారున్నంత సేపూ ఏ గొడవా ఉండేది కాదు.
    ఇప్పుడు ఈ రెండు రంగాలు కలిసి పోయాయి. రెండు కంప్యూటర్లని టెలిఫోను తీగతో అనుసంధించినప్పుడు కంప్యూటరు రంగం భాష వాడాలా? కమ్యూనికేషన్ రంగం భాష వాడాలా?
    హైదరాబాదులో కోస్తా తెలుగు మాట్లాడాలా? తెలంగాణా తెలుగు మాట్లాడాలా? కలగా పులగం చేసి మాట్లాడతాం. అదే జరిగింది ఇక్కడ కూడా. కొట్టు ఎంత పెద్దదో చెప్పవలసినప్పుడు "కిలో" అనే ప్రత్యయం 1024 ని సూచిస్తుంది. తీగల మీద ఎంత జోరుగా వార్తలు ప్రయాణం చేస్తున్నాయో చెప్పవలసి వచ్చినప్పుడు కిలో అంటే 1000.
    ఈ సూక్ష్మం నాలాంటి చాదస్తులకి తప్ప సామాన్యులకి తెలియదు. విద్యార్థులు ఈ సూక్ష్మం గమనించకపోతే పప్పులో కాలేసే ప్రమాదం ఉంది. మార్కులు తక్కువ వస్తాయి.
    మామూలుగా పామరులు ఈ సూక్ష్మం గమనించకపోతే కొంపలేవీ ములిగిపోవు.

    ReplyDelete
    Replies
    1. చాలా బాగా చెప్పారు
      డౌట్ క్లియర్ అయ్యింది
      ధన్యవాదాలు

      Delete