Sunday, September 30, 2007

કમ્પ્યુટરની અંકપધ્ધતી

કમ્પ્યુટરની અંકપધ્ધતી - ચીરાગ પટેલ Sep 30, 2007

આદરણીય જુગલકાકાએ મને કમ્પ્યુટર ક્ષેત્રે કાંઈક લખવા માટે પ્રેરકબળ પુરું પાડ્યું. એવું કાંઈક કે જે પાયાની માહીતી આપીને સામાન્ય વાચકને કમ્પ્યુટરનો ઉપયોગ કરવા માટે મજબુર કરી દે. આમ તો ઘણા સમયથી મારે C++ ભાષા (પ્રોગ્રામીંગની ભાષા) વીશે ગુજરાતીમાં લખવું શરું કરવું હતું, પરંતુ જુગલકાકાની વાતે મને એક નવી જ દીશા સુઝાડી! અને આ બ્લોગ તમારી સમક્ષ હાજર છે! તો હવે પડદો ઉંચકાય છે...

સૌપ્રથમ કમ્પ્યુટરનો અર્થ છે તે સમજીએ. કમ્પ્યુટરનો સરળ અર્થ છે: ગણતરી કરતું યંત્ર! પરંતું, કમ્પ્યુટર માત્ર ગણતરી કરીને અટકી જવાને બદલે આપણી સમક્ષ એક અવનવી દુનીયા ખડી કરી દે છે (મેટ્રીક્સ મુવીમાં દર્શાવ્યા મુજબ જ સ્તો!). માત્ર ગણતરી જ કરવી હતી તો 'કેલ્ક્યુલેટર' છે જ ને. જો કે, કમ્પ્યુટર જે પણ કામ કરતું હોય, અંતે તો કરે છે ગણતરી જ (નામ પ્રમાણે કામ તો કરવું જ પડે ભાઈ). તો ચાલો, કમ્પ્યુટર એવું તો શું અને વળી કેવી રીતે ગણે છે તેની સમજુતી જોઈએ.

આપણે ગુજરાતીઓ ગણતરીમાં પાકાં કહેવાઈએ છીએ (કઈ, એ તો સહુ સમજીએ જ છીએ!). તો મને કહો, દશઅંકી (decimel) પધ્ધતી એટલે શું? (સુરેશદાદા વઢશે: લ્યા છોકરા, મશ્કરી કરે છે?) દશઅંકી પધ્ધતી ભારતે દુનીયાને આપેલી મહાનતમ ભેટ છે. કોઈ પણ સંખ્યાને 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 એમ કુલ દશ અંકો વડે દર્શાવવી એટલે દશઅંકી પધ્ધતી વાપરી એમ કહેવાય! (ભાઈ, દશઅંકી પધ્ધતી અને 10 જ ગાયબ થઈ ગયો? ના, 10 એટલે 0 અને 1 વડે બનતી સંખ્યા. એમ કાંઇ અમે કોઈને ખોટું લાગવા દઈએ?)

આ જ રીતે, કમ્પ્યુટર પોતાની ભાષામાં દ્વીઅંકી (binary) પધ્ધતીનો ઉપયોગ કરે છે. (બોલો ચતુરસુજાણો, દ્વીઅંકી પધ્ધતી એટલે શું?) (હવે ટપારવાનો વારો જુ.કાકાનો: ચીરાગ તમે અમને રસક્ષતી કરવાને બદલે, ભાષાને વહેવા દો અને અમને આકંઠ પાન કરવા દો.) એટલે કમ્પ્યુટર પોતાને માટે 0 અને 1 નો ઉપયોગ કરીને દરેક સંખ્યા બનાવે છે! (માથું ખંજવાળવું પડશે એવું લાગે છે? માફ કરજો. કમ્પ્યુટરનો 0 અને 1 માટેનો પ્રેમ આપણને કેવા નાચ નચાવે છે, નહીં?)

દરેક દશઅંકી સંખ્યાને દ્વીઅંકીમાં રુપાંતરીત કરવા તમને એક સાદો નીયમ જણાવું. 8-4-2-1 નો નીયમ. 0થી 15 સુધીની કોઈ પણ એક સંખ્યા ધારો. દા.ત., 12. હવે 8-4-2-1 નો ઉપયોગ કરીને 12 કેવી રીતે બને? 8+4 = 12. ઠીક? હવે, આપણે 12 બનાવવા માટે 8-4-2-1માંથી જે સ્થાન વાપર્યા હોય તેને બદલે 1 મુકો અને જે ના વાપર્યા હોય તેને સ્થાને 0 મુકો. શું બન્યું? 1-1-0-0 (8-4-2-1 નો ક્રમ જાળવવો અગત્યનો છે.). એટલે 12 (જે દશઅંકી છે)ને દ્વીઅંકીમાં 1100 કહેવાય. 1100ની સાથે 'b'નું છોગું લગાવી દો એટલે કોઈ ગુંચવાડો ઉભો ના થાય. (નહીંતર, ગુજરાતીઓ ગભરાઈ જશે કે, માળું મેં 12રુપીયા આપ્યા હોય તેના 1100 થઈ ગયા?) આમ, 12 = 1100b. ચાલો જોઉં, હવે થોડી પ્રેક્ટીસ કરો. 0થી 15 સુધીની બધી દશઅંકી સંખ્યાને દ્વીઅંકીમાં ફેરવો. (સુ.દાદા: ઠીક ભાઈ, હવે 15થી મોટી સંખ્યાને દ્વીઅંકીમાં કેવી રીતે ફેરવું?) 8ના બમણા કરીએ તો શું મળે? શાબાશ, 16. તો હવે, 0થી 31 સુધીની દશઅંકી સંખ્યાને દ્વીઅંકીમાં ફેરવવા 16-8-4-2-1નો નીયમ લગાવો. 16-8-4-2-1 વડે દર્શાવાતી મોટામાં મોટી સંખ્યા જાણવી હોય તો કરો સરવાળો: 16+8+4+2+1=31!

દ્વીઅંકી સંખ્યાને દશઅંકીમાં ફેરવવા માટે પણ આ જ નીયમનો ઉપયોગ કરો. દા.ત., 10110b = 16+4+2 = 22. આમ, કોઈ પણ મોટી સંખ્યાને આપણે દ્વીઅંકીમાં ફેરવી નાંખીએ. અથવા દ્વીઅંકી સંખ્યાને દશઅંકી સંખ્યામાં. હવે કમ્પ્યુટરની ભાષામાં દરેક અંકને બીટ (bit) કહે છે. અને 8 બીટને 1 બાઈટ (byte) કહે છે. થોડી વાર માથું ખંજવાળી નાંખો અને મને એ કહો કે 1 બાઈટવડે લખાતી મોટામાં મોટી સંખ્યા કઈ? ધત્ત, 1111 1111b! (પ્રશ્નમાં એવું થોડું કહ્યું કે દશઅંકી સંખ્યા કહો?) નોંધ્યું? 4 બીટનાં ગ્રુપ બનાવીને સંખ્યા લખવામાં આવે છે કે જેથી કોઈ લોસ્મોચો ના થાય!. એમ ત્યારે, બોલો જોઉં, 1 બાઈટ વડે લખાતી મોટામાં મોટી દશઅંકી સંખ્યા કઈ? હમમમ... 128-64-32-16 8-4-2-1 નો નીયમ લાગુ પડ્યો! કેલ્ક્યુલેટર લેવું પડશે? (હા, જો અમેરીકામાં સ્કુલ કરી હોત તો. પણ, આપણે તો રહ્યાં દેશી!) 128+64+32+16+8+4+2+1 = 255! આમ, એક બાઈટ વડે 0થી લઈને 255 સુધીની કોઈ પણ દશઅંકી સંખ્યા લખી શકાય.

આ જ નીયમને વીસ્તારતા જઈએ તો જણાશે કે, 2 બાઈટ વડે 256 * 256 = 65536 (ઓછા 1) થાય, એટલે 0થી 65535 સુધીની સંખ્યા દર્શાવી શકાય. 4 બાઈટ વડે? રહેવા દો હવે...

કમ્પ્યુટર પોતાના કોઈ પણ કામકાજ માટે આ બાઈટરુપી કક્કાનો ઉપયોગ કરે છે. પછી એ દ્રશ્ય હોય કે લખાણ, મેમરીનો સંગ્રહ કરવાનો હોય કે પ્રીંટર પણ લખાણ છાપવાનું હોય! અને ઈંટરનેટ પર આટલો બધો માહીતીનો ધોધ વહે છે તે પણ 0 અને 1નો જ ઉપયોગ કરીને. કઈ રીતે? શું આજે જ બધું ભણી લેવું છે? આવતા અઠવાડીયાની રાહ જુઓને?

(સુરેશદાદા, જુગલકાકા; કાંઈ પણ અવીનય કર્યો હોય તે બદલ ક્ષમા)

No comments: