13.binary number system C programming

4
আমরা ĺতা Ļদনিȱন জীবেন নানা িহসাব-িনকােশর জনƟ দশিভিȑক (decimal) সংখƟা পȝিত বƟবহার কিরিকˍ কিɑউটার বƟবহার কের দুইিভিȑক বা বাইনাির (binary) সংখƟা পȝিতদশিভিȑক সংখƟা পȝিতেত আেছ ĺমাট দশDž অǦ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 আর বাইনািরেত দুDž, 0 আর 1আমরা এই অধƟােয় বাইনাির সংখƟা পȝিতর িকছু ĺমৗিলক িজিনস ĺদখব আর বাইনাির ĺথেক ĺডিসমাল এবং ĺডিসমাল ĺথেক বাইনাির সংখƟায় ˚পাȭর করা িশখবĺডিসমােল আমরা গণনা কির এভােব: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, … 19, 20, 21, …, 98, 99, 100, 101 ... ĺদেখা, যখনই আমরা ডান িদেকর ঘের (একেকর ঘের) দশDž অǦ বƟবহার কের ĺফিল, তখন তার বাঁেয় দশেকর ঘেরর অেǦর মান এক বাড়াই (আর যিদ না থােক তাহেল 1 বসাই বা 0-এর সেǩ 1ĺযাগ কির আর ি, কারণ 9 আর 09 িকˍ একই কথা, তাই 09-এর পরবিতŪ সংখƟা হেDZ 10), আবার দশেকর ঘের 0 ĺথেক 9 সব অǦ বƟবহার কের ĺফলার পের শতেকর ঘেরর অেǦর মান এক বাড়াই (আর যিদ না থােক তাহেল 1 বসাই বা 0-এর সেǩ 1 ĺযাগ কির আর ি)ĺতমনই বাইনািরেত আমরা গণনা করব এইভােব: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011 ... ĺযেহতু অǦ মাƯ দুDž, তাই দুDž অেǦর বƟবহার হেয় ĺগেলই বাঁ িদেকর ঘের এক বসােত হয় বা 0-এর সেǩ 1 ĺযাগ করেত হয় (বাঁ িদেক ĺতা আমরা ইDZামত শূনƟ বসােত পাির)বাইনাির িসেʁেম অবশƟ আমরা একেকর ঘর, দশেকর ঘর, শতেকর ঘর, সহেƿর ঘর না বেল বলব এেকর ঘর, দুইেয়র ঘর, চােরর ঘর, আেটর ঘর। ĺকন বল ĺতা? একটু িচȭা কেরা ĺডিসমােল ĺযমন 10 িলখেত দুDž অǦ লােগ, 100 িলখেত িতনDž, 1000 িলখেত চারDž, ĺতমনই বাইনািরেত দুই িলখেত দুDž (10), চার িলখেত িতনDž (100), আট িলখেত চারDž (1000), ĺষাল িলখেত পাঁচDž (10000) অǦ বƟবহার করেত হয়। ĺডিসমােল ডান িদেকর Ƶথম অǦ (10 0 = 1) হেDZ একেকর ঘর, িʸতীয় অǦ (10 1 = 10) হেDZ দশেকর ঘর, তৃ তীয় অǦ (10 2 = 100) হেDZ শতেকর ঘর,ĺতমনই বাইনািরেত ডানিদেকর Ƶথম অǦ (2 0 = 1) হেDZ এেকর ঘর, পেরর অǦ (2 1 = 2) হেDZ দুইেয়র ঘর, তারপর (2 2 = 4) হেDZ চােরর ঘর, এই রকমদশিভিȑক সংখƟায় ĺযমন ĺযাগ, িবেয়াগ, ʟণ, ভাগ করা যায়, ĺতমনই বাইনািরেত করা যায়। আসেল ĺযাগ করেত পারেল িকˍ বািক কাজ করা ĺকােনা বƟাপার নয়। আবার বাইনািরেত ভǞাংেশর বƟাপার আেছ, তেব আিম ĺকবল পূণŪসংখƟা িনেয়ই আেলাচনা করবĺযােগর ĺǘেƯ মূল িহসাবʟেলা হেDZ: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 10ĺডিসমােলর মেতাই িহসাব, 1 + 1 এর ĺǘেƯ ĺদেখা, দুইেয়র (10) শূনƟ এল Ƶথেম, হােত থােক এক, ĺসDž পের িলখলাম101 + 101 = কত? Ƶথেম এেকর ঘেরর ĺযাগ, 1 + 1 = 10তাই ĺযাগফেলর এেকর ঘের বসেব 0 আর হােত থাকল 1 (carry)এবাের দুইেয়র ঘের, 0 + 0 = 0, এখন এই 0-এর সেǩ হােতর 1 ĺযাগ করেত হেব। তাহেল ĺযাগফেলর দুইেয়র ঘের বসেব 1এবাের চােরর ঘেরর ĺযাগ করেল পাই, 1 + 1 = 10হােত িকছু ĺনই (ĺকােনা carry ĺনই)সুতরাং চােরর ঘের বসেব 0 আর 1 বসেব আেটর ঘের। ĺযাগফল: 1010এবাের বেলা 1011 + 1011 = কত? ĺযাগ কের যিদ ĺদেখা ĺযাগফল 10110 হয়িন, তাহেল তু িম ĺযােগ ĺকাথাও ভু ল কেরছিবেয়ােগর ĺǘেƯও ĺডিসমােলর মেতা িহসাব হেব0 – 0 = 0, 1 – 0 = 1, 1 – 1 = 0, 0 – 1 = 1ĺশেষরDž ĺখয়াল কেরা , 23 – 15 করার সময় আমরা কী কির? তখন 3-এর বাঁেয় একDž কাɤিনক 1 ধের িনই (বা 1 ধার কির),তারপর 13 – 5 = 8 ĺলিখ। আর ĺযই একDž ধার করলাম, ĺসDž পেরর ঘের 1-এর সেǩ ĺযাগ কের িদই। ĺতমনই বাইনািরেত 0 – 1করেত ĺগেল 0-এর বাঁেয় একDž এক ধরব, তখন সংখƟাDž হĺব 10 (দুই), এই দুই ĺথেক এক বাদ িদেল এক থাকেব। পেরর ঘের একDž এক ĺযাগ করেত হেব (ĺযই সংখƟাDž িবেয়াগ হেDZ তার সেǩ)110 – 101 = কত? এেকর ঘের 0 ĺথেক 1 বাদ িদেল থােক 1, এখােন 1 ধার করেত হেয়েছ। তাই 101-এর দুইেয়র ঘের ĺসDž ĺযাগ কের ĺদব। তাহেল দুইেয়র ঘের 1 – 1 = 0, চােরর ঘের 1 – 1 = 0তাই িবেয়াগফল হেব: 001 বা 1ĺযাগ-িবেয়াগ পারেল ʟণ-ভাগ না পারার কারণ ĺনই। ĺডিসমােলর মেতাই িনয়মআবার ĺকােনা ĺডিসমাল সংখƟােক আমরা িনিদŪ ɳ অǦ x 10 ওই অেǦর অবʆান -এর ĺযাগফল িহেসেব ĺযমন িলখেত পাির, বাইনাির সংখƟােকও িনিদŪ ɳ অǦ x 2 ওই অেǦর অবʆান -এর ĺযাগফল িহেসেব ĺলখা যায়। ĺযমন: 1903 = 1 x 10 3 + 9 x 10 2 + 0 x 10 1 + 3 x 10 0

Transcript of 13.binary number system C programming

  • 1. - (decimal) (binary) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , 0 1 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 19, 20, 21, , 98, 99, 100, 101 ... , ( ) , ( 1 0- 1 , 9 09 , 09- 10), 0 9 ( 1 0- 1 ) : 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011 ... , 0- 1 ( ) , , , , , , ? 10 , 100 , 1000 , (10), (100), (1000), (10000) (100 = 1) , (101 = 10) , (102 = 100) , (20 = 1) , (21 = 2) , (22 = 4) , , , , , , : 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 10 , 1 + 1 , (10) , , 101 + 101 = ? , 1 + 1 = 10 0 1 (carry) , 0 + 0 = 0, 0- 1 1 , 1 + 1 = 10 ( carry ) 0 1 : 1010 1011 + 1011 = ? 10110 , 0 0 = 0, 1 0 = 1, 1 1 = 0, 0 1 = 1 , 23 15 ? 3- 1 ( 1 ), 13 5 = 8 , 1- 0 1 0- , 10 (), ( ) 110 101 = ? 0 1 1, 1 101- 1 1 = 0, 1 1 = 0 : 001 1 - - x 10 - , x 2 - : 1903 = 1 x 103 + 9 x 102 + 0 x 101 + 3 x 100

2. : 10110 = 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 0 x 20 Exponential Expression , : 10110 = 1 x 24 + 0 x 23 + 1 x 22 + 1 x 21 + 0 x 20 = 1 x 16 + 0 x 8 + 1 x 4 + 1 x 2 + 0 x 1 = 16 + 0 + 4 + 2 + 0 = 22 10110 = 22 , , ? char binary[] = "10110"; int len = 5; // 5 int decimal = 0; // , 0 2 binary[0] '1' ,- ?- 4 , 0 int position = 4; int indx; for(indx = 0; indx < len; indx++) { decimal = decimal + pow(2, position); position--; } , pow math.h ab - pow(a, b) : #include #include #include int main() { char binary[65]; int len, decimal, power, i; printf("Enter the binary number: "); scanf("%s", binary); decimal = 0; len = strlen(binary); power = len - 1; for(i = 0; i < len; i++) { decimal += pow(2, power); power--; } printf("Decimal value is %dn", decimal); return 0; } : . 10110 , ? 31 22 3. pow(2, position) position- , : decimal += binary[i] * pow(2, power); ? 10110- , : ['1', '0', '1', '1', '0'] binary[0]- pow(2, 4), binary[1]- pow(2, 3), , binary[4]- pow(2, 0) 10110- ? Decimal value is 1510 ? ? , decimal += binary[i] * pow(2, power); , binary[i]- '0' '1' ( '0' '1') '0' 48 '1' 49 '0' 0 '1' 1 ? '0' '0' = 48 48 = 0 '1' '0' = 49 48 = 1 ? binary[i] (binary[i] '0') ( ) 95 n- , 2n