માઈક્રો પ્રોસેસર - ચીરાગ પટેલ Dec 24, 2007
માણસના શરીરમાં કેટલાં બધાં અવયવો છે! એમાંથી કેટલાંક દેખાય છે, જ્યારે કેટલાકનું કામ દેખાય છે. દરેક અવયવોને નીયંત્રીત કરતું અંગ છે - મગજ. જો મગજ બંધ તો બધું જ બંધ. દરેક જીવ કે યંત્રમાં કોઈ એક એવું અંગ હશે જ, કે જે સમગ્ર દેહ/યંત્રને સંચાલીત કરતું હશે. આ બ્લોગ (વીજાંશ) જે વીષયને સમજવા પ્રયત્ન કરે છે, તે કમ્પ્યુટર નામના યંત્રને આભારી છે. કમ્પ્યુટરને સંચાલીત/નીયંત્રીત કરતું અંગ છે - સેંટ્રલ પ્રોસેસીંગ યુનીટ (Central Processing Unit અથવા ટુંકમાં CPU). દરેક કમ્પ્યુટરમાં એક કે એકથી વધુ માઈક્રોપ્રેસેસર (Microprocessor) વડે સીપીયુ બને છે (આપણા મગજના જુદા જુદા ભાગ મળીને એક યુનીટ - મગજ બનાવે એ જ પ્રમાણે). માઈક્રોપ્રોસેસરમાં અસંખ્ય (કરોડોની સંખ્યામાં) સુક્ષ્મ ટ્રાંઝીસ્ટર(Transistor) હોય છે. મગજનાં જ્ઞાનતંતુઓની માફક જ આ બધાં ટ્રાંઝીસ્ટર ભેગાં મળીને કામ કરતાં હોય છે.
જેવી રીતે પ્રાણીની ઉત્ક્રાંતી થવાથી મગજનું કદ વધતું ગયું છે અને મગજની કામગીરી વધતી ચાલી છે, એવી જ રીતે માઈક્રોપ્રોસેસરની ક્ષમતામાં વધારો થતો જાય છે. Moore’s Law (મુરનો નીયમ) પ્રમાણે દર 18 મહીને માઈક્રોપ્રોસેસરની ક્ષમતા બમણી થતી હોય છે. (એક ગુજરાતીને પોરસાવાનું આથી વધુ મોટું કારણ કયું હોય? જે રોકાણ 18 મહીને બમણું થતું હોય એમા કયો લાલો પાછો હટે?). પહેલવહેલા માઈક્રોપ્રોસેસરની જે ક્ષમતા હતી, એ કરતાં 1 કરોડગણી વધુ ક્ષમતા અને એના કરતાં 5મા ભાગનું કદ આજના પ્રોસેસરમાં છે! અને આ પ્રગતી માત્ર 25 વર્ષમાં જ થઈ છે (… ભારે ઝડપી ઉત્ક્રાંતી, ભારે કરી … )!
આવા માઈક્રોપ્રોસેસરમાં ગાણીતીય અને તાર્કીક કામ કરવા માટે એએલયુ (ALU or Airthmetic and Logic Unit) હોય છે. માહીતીનો સંગ્રહ કરવા મેમરી યુનીટ(MU or Memory Unit) હોય છે. કામકાજ કરવા હાથ-પગ જેવાં રજીસ્ટર (Registor) હોય છે. આ બધાં યુનીટ કેટલાં બીટની માહીતી એકસાથે આપ-લે કરે છે એના પરથી એમના નામ પડે છે. જેમ કે, 8-બીટ, 16-બીટ, 32-બીટ અને 64-બીટ મશીન. એટલે કે, માઈક્રોપ્રોસેસર એના એક કોળીયામાં આટલા બીટની ક્ષમતાનો માહીતીનો જથ્થો લઈ શકે છે (બસ, વધુમાં વધુ 64-બીટ? આપણે બંદા તો એક કોળીયામાં ચોખાનાં 150 દાણા ખાઈ શકીએ ). 8-બીટ એટલે 1 બાઈટ એવું યાદ છે ને?
પહેલ વહેલું માઈક્રોપ્રોસેસર ઈંટેલ (Intel) કમ્પનીએ 4004, ટેક્ષાસ ઈંસ્ટ્રુમેંટ્સ (Texas Instruments) TMS 1000, અને ગેરેટ એઆઈ રીસર્ચ (Garrett AiResearch) CADC બનાવ્યું હતું. આ ત્રણેય લગભગ સાથે-સાથે જ બઝારમાં મુકાયા હતાં. આ બધાં 1970ની આસપાસ 4-બીટના માઈક્રોપ્રોસેસર તરીકે આવ્યાં હતાં.
ડ્યુઅલ કોર પ્રોસેસર (Dual-core Processor) હવે વપરાશમાં આવતાં જાય છે. 64-બીટના પ્રોસેસરનું કદ એટલું જ રાખીને એમાં બે પ્રોસેસર ફીટ કરવાથી ડ્યુઅલ કોર પ્રોસેસર બને છે (આપણી એક ખોપરીની અંદર, ખોપરીનું કદ વધાર્યા વગર બે મગજ ફીટ કરી દઈએ, એવું)! એ જ પ્રમાણે હવે તો ક્વૅડ કોર (Quad-core) અને એઈટ કોર (Eight-core) પ્રોસેસર અમુક હાઈ-પ્રોસેસીંગ સીસ્ટમમાં વપરાય છે (એક જ ખોપરીમાં આઠ મગજ!!!).
આપણે બોલચાલની ભાષાને સાંકેતીક શબ્દોમાં ફેરવીએ તો અક્ષરોની સંખ્યા ઘટાડી શકીએ. ૐ કે સ્વસ્તીક આનું પ્રાચીન ઉદાહરણ છે. એ પ્રમાણે માઈક્રોપ્રોસેસરની માહીતીની આપ-લે કરવાની જે ભાષા છે, એના શબ્દો ઘટાડીને જે માઈક્રોપ્રોસેસર બને છે એમને રીસ્ક પ્રોસેસર (RISC or Reduced Instruction Set Computer) કહે છે. માઈક્રોપ્રોસેસરની ભાષાને એસેમ્બ્લી લેંગ્વેજ (Assembly Language) કહે છે. એમાં પણ પ્રગતી થઈને હવે 64-બીટ પ્રોસેસર મળે છે એને સીસ્ક (CISC or Complex Instruction Set Computer) કહેવાય છે. આમ, માઈક્રોપ્રોસેસરનું કદ, માહીતી આપ-લે ક્ષમતા, ભાષા દરેકમાં ધરખમ ફેરફાર આવતાં જ જાય છે. (આપણે આપણા વીચારોને ભાષાનાં વાઘાં પહેરાવ્યાં વગર જ્ઞાનતંતુઓની આપ-લેની વીજ-રાસાયણીક ભાષામાં વાત કરી શકીએ?)
માઈક્રોપ્રોસેસરને માઈક્રોકંટ્રોલર (Micro-controller), ડીજીટલ સીગ્નલ પ્રોસેસર (Digital Signal Processor or DSP), સીસ્ટમ ઓન ચીપ (SoC or System-on-Chip) વગેરે નામે પણ ઓળખવામાં આવે છે. ખાસ કામ માટે વપરાતાં માઈક્રોપ્રોસેસરને જે તે કામ મુજબનું નામ આપવામાં આવે છે. જેમ કે, ગ્રાફીક્સનું કામ કરતાં પ્રોસેસરને GPU or Graphics Processing Unit કહે છે.
જુદી-જુદી કમ્પનીના પ્રોસેસરની ડીઝાઈનમાં થોડાં પાયાનાં ફેરફાર હોય છે. ઈંટેલના પ્રોસેસર લીટલ એંડીયન(Little Endian) કહેવાય છે, જ્યારે પાવર પીસી (PowerPC) બીગ એંડીયન (Big Endian) કહેવાય છે. 32-બીટ પ્રોસેસર હોય અને લીટલ એંડીયન હોય તો બીટ 0નું સ્થાન જમણી બાજુ હોય અને બીટ 31 ડાબી બાજુ હોય, જ્યારે બીગ એંડીયનમાં બીટ 0નું સ્થાન ડાબી બાજુ અને બીટ 31નું સ્થાન જમણી બાજુ હોય (આપણે આપણું મોઢું અરીસામાં જોઈએ તો પ્રતીબીંબ પલટાયેલું લાગે છે, એવું જ).
કેટલાંક પ્રચલીત પ્રોસેસર બ્રાંડ: 65xx, ARM, RCA, DEC, Intel, MIPS, Motorola 6800, IBM POWER, OpenRISC, PA-RISC, SPARC, AMD, Xilinx વગેરે.
ઈતીશ્રી માઈક્રોપ્રોસેસર કથાયૈ નમઃ॥
યુનીકોડ ફોંટ - ચીરાગ પટેલ Nov 04, 2006
આપણે જોઈ ગયા, કે દરેક કેરેક્ટરને એક ચોક્કસ બાઈટ સંખ્યા વડે દર્શાવાય છે. એક બાઈટ, એટલે 8 બીટ અથવા 2 નીબલ, વડે 0થી લઈને 255 સુધીની જ સંખ્યા સમાવી શકાય. એટલે પ્રચલીત ભાષાઓમાં લખાણ માટે જે તે ફોંટ બનાવનારે આ મર્યાદામાં રહીને જ અક્ષરો દર્શાવવાના થયાં. અને એમાં પણ ભારે ઉથલ-પાથલ મચી ગઈ. એક જણે ગુજરાતીના ‘ક’ માટે 78નો અંક રાખ્યો અને બીજાએ 98નો અંક રાખ્યો. આમ, એક ફોંટમાં લખેલી ફાઈલને ખોલવા માટે બીજો ફોંટ લગભગ નકામો! અને વીચારો કે ગુજરાતીમાં લખેલી ફાઈલને ઈંગ્લીશ કે અરેબીકમાં ખોલીએ તો…
આ બધી અંધાધુંધી જો કે ઈંગ્લીશ સીવાયની લીપી માટે રહી. ઈંગ્લીશમાં તો જુદાં જુદાં ફોંટ વાપરવા છતાં અક્ષરો દર્શાવવાની સંખ્યા તો ચોક્કસ જ રહી. એટલે, ટાઈમ્સમાં લખેલી ફાઈલ એરીયલ ફોંટ વડે ખુલે તો ખરી જ. માત્ર, જે તે અક્ષરના વળાંકો અલગ રીતે જોવા મળે. આવું કાંઈક બીજી બધી લીપી માટે વીચારી શકાય?
આ જ પ્રશ્નમાંથી યુનીકોડને નીયમબધ્ધ કરવાની શરતો નક્કી થઈ. યુનીકોડમાં UTF-7, UTF-8, UTF-16 વગેરે અલગ-અલગ નીયમો પ્રચલીત થયા. અને યુનીકોડમાં ફોંટ બનાવવા માટે બે બાઈટનો ઉપયોગ કરવાનું વીચારાયું. આમ, બે બાઈટ વડે 0થી લઈને 65535 સુધીની સંખ્યા લખી શકાય, એટલે દુનીયાની દરેક પ્રચલીત લીપી માટે ચોક્કસ સંખ્યા-ગાળો નક્કી કરવામાં આવ્યો. હવે તો, 4 બાઈટના યુનીકોડ વીશે પણ વીચારણા ચાલી રહી છે! એટલે 0થી લઈને 65535 * 65535 સુધીની સંખ્યા દર્શાવી શકાય!
UTF-8 એ આસ્કી કેરેક્ટર સાથે સારી રીતે સુસંગત થાય છે, એટલે વધુ પ્રચલીત છે. આપણે, લીપી પ્રમાણે થોડી સંખ્યાઓ જોઈએ.
દેવનાગરી - 0×0900 - 0×097f ગુજરાતી - 0×0a80 - 0×0aff
વધુ માહીતી માટે જુઓ: http://en.wikipedia.org/wiki/Basic_Multilingual_Plane#Basic_Multilingual_Plane
હવે, ગુજરાતીના દરેક અક્ષર માટે ઉપર દર્શાવેલા અંતરાલમાંથી એક ચોક્કસ સંખ્યા નક્કી થઈ છે. જેમ કે, ‘ક’ માટે 0×0a95, ‘ૐ’ માટે 0×0ad0, વગેરે. વધુ માહીતી માટે જુઓ: http://en.wikipedia.org/wiki/Gujarati_script
વીંડોઝ એક્ષ.પી. સાથે શ્રુતી ફોંટ આવે છે જે યુનીકોડ છે. એ ફોંટમાં લખેલી ફાઈલને બીજા કોઈ યુનીકોડ ફોંટ વડે ખોલીએ તો આપણને ‘ક’ જ્યાં હોય ત્યાં જ દેખાશે, પરંતુ એ જુદા ફોંટ વડે મરોડમાં થોડો ફેર હોઈ શકે. આમ, યુનીકોડ વડે દરેક અક્ષરનું ચોક્કસ સંખ્યા-સ્થાન નક્કી થઈ ગયું છે, જેણે ઈંટરનેટના વપરાશમાં ક્રાંતી લાવી દીધી. પહેલાં તો જે તે વેબ-સાઈટ પોતાના ફોંટ બનાવે જે ડાઉનલોડ કરવા પડે, અને તો જ જે તે સાઈટ દેખાય. જ્યારે હવે તો, યુનીકોડમાં બનેલી સાઈટ જોવા એવું કરવાની જરુર નથી પડતી (જો કે, અમુક અપવાદ હોઈ શકે છે).
www.bhashaindia.com પરથી આસ્કી <-> યુનીકોડ બન્ને રીતે ફાઈલને પરીવર્તીત કરવાને યુટીલીટી ડાઉનલોડ કરી શકાય છે (TBILconverter). વિશાલે પણ www.gurjardesh.com પર ઓનલાઈન યુટીલીટી મુકી છે.
બાઈટોપીડીયા - ચીરાગ પટેલ Oct 13, 2007
આપણે ઘણીવાર એવું સાંભળ્યું હશે, કે મારી હાર્ડ ડ્રાઈવ (hard disc drive) 80GBની છે. તો આ 80જીબી વળી શી બલા છે? અહીં જી.બી. એટલે ગીગા બાઈટ (Giga Byte)નું મીતાક્ષરી સ્વરુપ. આમ, 80જીબી હાર્ડ ડ્રાઈવમાં 80ગીગા બાઈટ જેટલી માહીતીનો સંગ્રહ થઈ શકે. પ્રચલીત પધ્ધતી પ્રમાણે, 1KB એટલે 1 કીલો બાઈટમાં કુલ 1024 બાઈટ હોય! (1કીલો મીટરમાં 1000 મીટર હોય! આ વળી કેમનું થયું?) આમ થવાનું કારણ એ કે બાયનરી પધ્ધતીમાં 2ના ગુણાંકમાં ગણતરી થતી હોય છે. 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 = 1024 થાય! પ્રમાણમાપની આંતરરાષ્ટ્રીય સંસ્થા Systems International (SI)એ નક્કી કરેલાં ધારાધોરણ મુજબ 1KB એટલે 1000બાઈટ જ ગણવા અને પ્રચલીત 1KBને 1KiB (kibibyte) કહેવું એવું ઠરાવવામાં આવ્યું છે. પ્રચલીત ગણતરી મુજબ જોઈએ તો:
1KB = 1કીલો બાઈટ = 1024 બાઈટ = 2 exp 10 (2ની 10મી ઘાત, અર્થાત 2 * 2 * 2… એમ 10 વખત) 1MB = 1મેગા બાઈટ = 1024 * 1024 બાઈટ = 1048576 બાઈટ = 2 exp 20 1GB = 1 ગીગા બાઈટ = 1024 * 1024 * 1024 બાઈટ = 2 exp 30 1TB = 1 ટેરા બાઈટ = 1024 * 1024 * 1024 * 1024 બાઈટ = 2 exp 40 1PB = 1 પીટા બાઈટ = 1 ટેરા બાઈટ * 1024 બાઈટ = 2 exp 50 1EB = 1 એક્ઝા બાઈટ = 1 પીટા બાઈટ * 1024 બાઈટ = 2 exp 60 1ZB = 1 ઝેટ્ટા બાઈટ = 1 એક્ઝા બાઈટ * 1024 બાઈટ = 2 exp 70 1YB = 1 યોટ્ટા બાઈટ = 1 ઝેટ્ટા બાઈટ * 1024 બાઈટ = 2 exp 80
8 બીટનો 1 બાઈટ બને છે. હવે, 4 બીટના સમુહને 1 નીબલ (nibble) કહે છે. એક બાઈટની સંખ્યા લખવામાં સરળતા રહે એ માટે બે નીબલના ગ્રુપમાં તે સંખ્યા લખવામાં આવે છે. જેમ કે, 1011 1011b, 0011 1100b, વગેરે. સંખ્યાને લખવાની પ્રચલીત રીત છે તેને બાયનરીને બદલે હેક્ઝાડેસીમલમાં લખવી. હેક્ઝાડેસીમલમાં 0,1,2,3,4,5,6,7,8,9 સુધીનાં અંકો અને ત્યાર બાદ 10ને બદલે A(a), 11ને બદલે B(b), 12ને બદલે C(c), 13ને બદલે D(d), 14ને બદલે E(e), અને 15ને બદલે F(f) લખવામાં આવે છે. અને સંખ્યાને 0x(Zero-x)થી પ્રીફીક્સ કે h વડે પોસ્ટ્ફીક્સ કરવામાં આવે છે. ચાલો ત્યારે, થોડાં ઉદાહરણો કરીશું?
1011 1100b માં 1011b = 11(8+2+1) છે અને 1100b = 12(8+4) છે. હવે 11 એટલે B અને 12 એટલે C. આમ, 1011 1100b = 0xBC અથવા 0xbc અથવા bch. એને ડેસીમલમાં ફેરવીએ તો? એક નીબલમાં 0થી 15 સુધીની સંખ્યા દર્શાવી શકાય, એટલે કે કુલ 16 સંખ્યાઓ દર્શાવી શકાય છે.બાઈટમાંના ડાબી બાજુથી પહેલાં નીબલને 16 વડે ગુણો અને બીજા નીબલને તેમાં ઉમેરો, તો હેક્ઝાડેસીમલ સંખ્યા ડેસીમલ બની જશે! આપણાં ઉદાહરણમાં, 0xbc = 11 * 16 + 12 = 176 + 12 = 188. હેક્ઝાડેસીમલમાં એક બાઈટમાં દર્શાવાતી સહુથી નાની સંખ્યા = 0×00 = 0, અને સહુથી મોટી સંખ્યા = 0xFF = 255. કમ્પ્યુટરમાં કેલ્ક્યુલેટરની એપ્લીકેશનમાં તમે એનાં “View” મેન્યુમાંથી “Scientific” સીલેક્ટ કરો. તમે ડાબી બાજુ ઉપર તરફ રેડીયો બટન જોશો, જેમાં Hex - Dec - Oct - Bin છે. ડીફૉલ્ટ સીલેક્શન ડેસીમલ હોય છે. કોઈ પણ 0થી255 વચ્ચેની સંખ્યા લખીને હેક્ઝ કે બીન સીલેક્ટ કરી જુઓ. ગમ્યું? (હવે ખ્યાલ આવ્યો કે શા માટે એક બાઈટને 4બીટ એટલે કે એક નીબલના જોડકામાં લખવામાં આવે છે? અને એમાં પણ હેક્ઝાડેસીમલ કેમ સરળ પડે છે એ પણ ખ્યાલ આવ્યો?) ફરી ઉપરનું ઉદાહરણ લખીએ તો,
188 = 1011 1100b = 0xBC 0 = 0000 0000b = 0×00 255 = 1111 1111b = 0xFF
તમે કીબોર્ડ(keyboard)ને ધ્યાનથી જોયું હશે તો એમાં 0,1,2,…,9 અને A,B,…,Z તથા !,@,…,+ વગેરે જેવાં ચીહ્નો ધરાવતી કી હશે. શીફ્ટ કી, પેઈજ અપ, પેઈજ ડાઉન, વગેરે જેવી કી હશે. આ દરેક કીને એક ચોક્કસ બાઈટ સંખ્યા આપવામાં આવેલી છે. દા.ત., ‘0′ = 0×30 = 48 ‘A’ = 0×41 = 65 ‘a’ = 0×61 = 97
આવા બાઈટકોડને આસ્કી(ASCII) કેરેક્ટર કહે છે. વધુ માહીતી માટે જુઓ: http://en.wikipedia.org/wiki/ASCII જ્યારે જ્યારે કમ્પ્યુટરમાં કોઈ પણ માહીતીની આપ-લે થાય છે ત્યારે એ બાઈટ રુપે જ થાય છે; જેમ કે, કીબોર્ડથી સીપીયુ, સીપીયુથી મોનીટર, સીપીયુથી હાર્ડ ડીસ્ક ડ્રાઈવ, સીપીયુથી ઈંટરનેટ, વગેરે. તમે અત્યારે જે વાંચી રહ્યાં છો એ પણ બાઈટની જ આપ-લે છે.
આપણાં જે પ્રચલીત લખવાના ફૉંટ છે તે બધાં આસ્કી ફોંટ છે. એટલે કે, 0-255ની સંખ્યાને સાંકળે તેવાં ચોક્કસ કેરેક્ટર લખવામાં આવે છે. જે તે ફોંટ ઇંસ્ટોલ કરીએ એટલે વર્ડ જેવી એપ્લીકેશન એ ફોંટ પ્રમાણે સ્ક્રીન પર કેરેક્ટર દર્શાવે છે. આ બાબત સમજવા એક પ્રયોગ કરી જુઓ. વર્ડ ખોલીને અત્યારે જે ફોંટ હોય તે રાખીને એક વાક્ય લખો. પછી જુદાં-જુદાં ફોંટ સીલેક્ટ કરતાં જાઓ અને જુઓ કે એ પ્રમાણે સ્ક્રીન પર જે કેરેક્ટર દેખાય છે તેમાં કેવા ફેરફાર થાય છે? ( Control key દાબી રાખીને A દબાવો એટલે જે લખ્યું છે એ બધું સીલેક્ટ થશે અને પછી Format મેન્યુમાંથી Font સીલેક્ટ કરી, જે ડાયલોગ બૉક્ષ આવે તેમાં જુદાં-જુદાં ફોંટ સીલેક્ટ કરતાં જાઓ).
કમ્પ્યુટરની અંકપધ્ધતી - ચીરાગ પટેલ 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નો જ ઉપયોગ કરીને. કઈ રીતે? શું આજે જ બધું ભણી લેવું છે? આવતા અઠવાડીયાની રાહ જુઓને?
(સુરેશદાદા, જુગલકાકા; કાંઈ પણ અવીનય કર્યો હોય તે બદલ ક્ષમા)