Your SlideShare is downloading. ×
13.binary number system C programming
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

13.binary number system C programming

99
views

Published on

Published in: Engineering

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
99
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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 <stdio.h> #include <string.h> #include <math.h> 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 <= 95। দুইেয়র পাওয়ার েলা হে 1, 2, 4, 8, 16, 32, 64, 128, ...। এখােন আমরা দখেত পাি 64 < 95 বা 26 < 95। তাহেল n-এর মান 6। আর আমােদর বাইনাির সংখ া হেব সাত অে র (0 থেক 6 মাট সাত অ )। যেহতু 64 < 95, তাই এই সংখ া নওয়া যায়। তাহেল চৗষি র ঘের (বাঁ থেক থম বা ডান থেক স ম) হেব 1 (1xxxxxx)। এখন n-এর মান 1 কমাই। 64 + 25 = 64 + 32 = 96, যা িকনা 95-এর চেয় বড়। তাই এেক নওয়া যােব না। অতএব বি েশর ঘের 0 বসাই (10xxxxx)। এবাের n-এর মান আবার এক কমাই, n-এর মান এখন 4।64 + 24 = 64 + 16 = 80 < 95। সুতরাং ষােলার ঘের হেব 1 (101xxxx)। এখন n-এর মান এক কমাই, n = 3। 80 + 23 = 80 + 8 = 88 < 95। তাই আেটর ঘেরও 1 বসেব (1011xxx)। এরপর একইভােব, n = 2-এর জন 88 + 22 = 88 + 4 = 92 < 95। চােরর ঘেরও 1 বসেব (10111xx)। তারপর n = 1, 92 + 21 = 92 + 2 = 94 < 95। দুইেয়র ঘেরও 1 (101111x)। এখন n = 0, 94 + 20 = 94 + 1 = 95। তাই এেকর ঘেরও 1। সুতরাং বাইনাির সংখ া হে 1011111। তামরা এখন এই প িতেত কােনা দশিভি ক সংখ ােক বাইনািরেত পা র করার া াম িলেখ ফেলা এবং িবিভ মান িদেয় পরী া কের দেখা। এখন একই কাজ আমরা একটু অন ভােব করব। িনেচর টিবল দেখা: ভাগফল ভাগেশষ 95/ 2 47 1 47/2 23 1 23/2 11 1 11/2 5 1 5/2 2 1 2/2 1 0 1 /2 0 1 এবাের ভাগেশষ কলােমর অ েলা শষ থেক থম েম লখেলই আমরা বাইনাির ন রটা পেয় যাব: 1011111। আর ভােগর কাজ আমরা তত ণ করব যত ণ না ভাগফল 0 পাি । এই প িতেতও তামরা ডিসমাল থেক বাইনাির পা েরর জন এক কাড িলেখ ফেলা। পা েরর কাড main ফাংশেন না কের আলাদা এক ফাংশেন করেব।