కొత్త లెక్కలు
సోవియట్ యూనియన్ స్పుత్నిక్‌ అనే కృత్రిమ ఉపగ్రహాన్ని అంతరిక్షంలోకి పంపినప్పుడు, అనగా 1960 దశకంలో, పాశ్చాత్య దేశాలలోను, జపాను లోను పెద్ద సంచలనం చెలరేగింది. వారి బోధన పద్ధతులలోను, వారు బోధ చెయ్యడానికి ఎంచుకున్న పాఠ్యాంశాల ఎంపికలోను లోపాలుండబట్టే సోవియట్ యూనియన్ అంతరిక్షంలో ఈ విజయం సాధించగలిగిందని కొంతమంది నమ్మి ప్రాథమిక పాఠశాలలలో నేర్పే గణితంలో మార్పు రావాలన్నారు. అలా మార్పు చెందిన లెక్కలే కొత్త లెక్కలు అంటే.
నిజానికి అన్ని వేలం వెర్రులలాగే ఈ వేలం వెర్రి కూడా చాలమట్టుకు సమసిపోయింది. కాని అదే దశకంలోనే కంప్యూటర్లు కూడా ఊపందుకొనడం వల్ల దశాంశేతర పద్ధతులలో లెక్కలు చెయ్యడం మీద ఉత్సాహం పెరిగింది. దశాంశేతర పద్ధతులు కొత్త లెక్కలలో ఒక భాగమే. ఇక్కడ ప్రస్తావన కంప్యూటర్ రంగంలో దశాంశేతర పద్ధతుల ఉపయోగం మీద మాత్రమే.
కంప్యూటర్ రంగంలో పని చేసే వారితో మాట్లాడుతున్నప్పుడు భాషా పరమైన ఇబ్బందులు కొన్ని ఉన్నాయి; వారి భాష ఏమిటో ఇతరులకి అర్థం అవదు. సైన్సుతో పరిచయం ఉన్నవారికి కూడా కంప్యూటర్ రంగంలో పని చేసే వారి లోకం మరోలోకం లా అనిపిస్తుంది. చిన్న ఉదాహరణ.
ఈ రోజుల్లో కిలో అనే మాట అందరికీ పరిచయమైనదే. కిలో పంచదార, కిలో చింతపండు, వగైరాలు నిత్యం వాడుకునే మాటలే. “కిలో” అంటే “వెయ్యి” కాబట్టి కిలోమీటరు అంటే వెయ్యి మీటర్లు, కిలోగ్రాము అంటే వెయ్యి గ్రాములు అని అర్థం చేసుకుంటున్నాం. ఇలాగే వెయ్యి కిలోలు ఒక “మెగా,” లేదా 1, 000, 000. కాని ఈ మెగా “బాగా పెద్ద” అన్న అర్థంలో వాడుతున్నాం (ఉ. మెగా స్టార్) కాని కచ్చితంగా “ఇంత” అన్న అర్థం ఇంకా తెలుగు నోట నలగ లేదు. ఒక మెగా గ్రాము అంటే మిలియను (1, 000, 000) గ్రాములు. ఇదే విధంగా వెయ్యి మిలియన్లు ఒక బిలియను. ఈ బిలియనుని సూచించడానికి “గిగా” అనే పూర్వ ప్రత్యయం వాడతారు. సైన్సుతో ఏపాటి పరిచయం ఉన్నా ఈ పూర్వ ప్రత్యయాలతో పరిచయం ఉండి తీరుతుంది. కనుక కిలో అంటే వెయ్యి, మెగా అంటే మిలియను, గిగా అంటే బిలియను అని అర్థం చేసుకుందాం. (కంప్యూటర్ రంగంలోనే కాదు ఆధునిక విజ్ఞాన రంగంలో లక్షలకి, కోట్లకి స్థానం లేదు.)
దశాంశ పద్ధతి (decimal system) లో ఎలా లెక్క పెడతాం? 0, 1, 2, 3, …, 8, 9 అని లెక్క పెట్టేసరికి మన దగ్గర ఉన్న పది అంకెలూ ఒక సారి లెక్కపెట్టడం అయిపోయింది కనుక ఆ విషయాన్ని జ్ఞప్తికి తెచ్చుకుంటూ 1 వేసి దాని తరువాత మళ్లా సున్న, ఒకటి, రెండు అనుకుంటూ 10, 11, 12, .., 18, 19 వేస్తాం. వేసి, వీటిని పది, పదకొండు, పన్నెండు, … అన్న పేర్లతో పిలుస్తాం. ఇప్పటికి రెండు సార్లు లెక్కపెట్టడం అయింది అని గుర్తు పెట్టుకోడానికి 2 వేసి మళ్లా సున్న నుండి తొమ్మిది వరకు 20, 21, 22, .. 28, 29 అని వేస్తాం. వేసి, వీటిని ఇరవై, ఇరవై ఒకటి, ఇరవై రెండు, ఇరవై మూడు, … అన్న పేర్లతో పిలుస్తాం. ఈ లేఖన చిహ్నాలు, ఈ పేర్లు దశాంశ పద్ధతికే పరిమితం అన్న మాట మన మనస్సులో ఉండదు; ఎందుకంటే తరతరాలబట్టీ మనం ఈ దశాంశ పద్ధతి తప్ప మరొక పద్ధతిలో లెక్కించ లేదు కనుక మనం పదే పదే "ఇది దశాంశ పద్ధతి" అని మననం చేసుకోనక్కర లేదు.
కంప్యూటర్లో లెక్కలన్నీ దశాంశ పద్ధతిలో నడవవు – వాళ్లదంతా ద్వియాంశ (binary) లోకం. కంప్యూటర్‌కి రెండే రెండు అంకెలు బోధపడతాయి: 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 అష్టాలు (అంటే, 8 బిట్లు, లేదా ఒక బైటు) అని అన్వయం చెప్పుకోవాలి తప్ప 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 అనే ఇంగ్లీషు మాటలకి సంక్షిప్త రూపం. అదే ధోరణిలో “ద్వియాంశ అంకము” అన్న మాటలని “ద్వింకము” అని కుదించి దీనిని 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 అని కూడా రాస్తూ ఉంటారు. (ఇక్కడ h అంటే hexadecimal అని అర్థం.) ఈ చిటకా కంప్యూటర్ రంగంలో తరచు వాడతారు.
కనుక, ఇక్కడ ఈ సందర్భంలో, రెండు షోడశాంశలో ఉన్న అంకెలు ఒక బైట్‌తో సమానం. అంటే, B5h అనేది ఒక బైట్ స్థలంలో ఇముడుతుంది. ఒక కొట్టు ఎంత పెద్దదో చెప్పడానికి “ఈ కొట్టులో 20 కిలోబైట్లు పడతాయి” అన్నప్పుడు ఆ కొట్లో 20x1024 = 20, 480 బైట్లు పడతాయని మనం అర్థం చేసుకోవాలి. బైటు ఒక్కంటికి ఒక ఇంగ్లీషు అక్షరం కనుక ఆ కొట్లో 20, 480 ఇంగ్లీషు అక్షరాలు పడతాయి.
ఇంగ్లీషు అక్షరాలని, అంకెలని కంప్యూటర్‌లో దాచడానికి సర్వసాధారణంగా ASCII కోడు వాడతారు. ఈ కోడులో ఒక బైటు పొడుగున్న జాగాలో ఒక అక్షరాంకం (alphanumeric character) ఇముడుతుంది. తెలుగు అక్షరాలని కొట్లో దాచడానికి (లేదా రాయడానికి) యూనికోడ్ (unicode) వాడాలి. ఇక్కడ అక్షరం ఒక్కంటికి 4 బైట్లు కావలసి ఉంటుంది. కనుక ఆ కొట్లో 10, 240 తెలుగు వర్ణాలు పడతాయి.