localho3t
localho3t
خواندن ۷ دقیقه·۵ سال پیش

دنیای دو دو یی D:

با سلام خدمت دوستای عزیز و بابت تاخخیر چند هفته ای معذرت میخوام با تیم بودیم سر یه پروژه و کلی سرمون شلوغ بود.

خب بریم سر مقاله امروز و امیدوارم خوشتون بیاد.



تاریچه:

اولین شرح از سیستم عددی دو دویی در قرن 2 قبل از میلاد یا 5 قبل از میلاد توسط پینگالا(pingala ) ارائه شد. پینگالا سیستم عددی دو دویی را در ارتباط با وزن های شعری ودیک (Vedic) با هجاهای بلند و کوتاه توصیف کرد. سیستم عددی دو دویی جدید اول بار به صورت مستند توسط گاتفرید لاینبتیز (Gottfried Leibniz) ارائه شد. سیستم عددی پینگال با یک شروع می شد ولی سیستم عددی لاینبتیز و کامپیوترهای جدید از صفر شروع می شود.

در سال 1854، ریاضی دان انگلیسی ،جرج بول ( George Boole) نوعی عملیات منطقی را ارائه داد که با نام جبر بولی شناخته شد. سیستم منطقی بول در توسعه سیستم های دو دویی به خصوص در اجرای آن در مدارهای الکترونیکی مؤثر واقع شد.

اعداد باینری چیست؟

در اعداد باینری تنها دو رقم ۰ و ۱ وجود دارد که در علم کامپیوتر نمایانگر روشن یا خاموش بودن سیگنال‌ هاست و ما به صورت روزمره از مبنای ده استفاده می‌کنیم که در آن ارقام از ۰ تا ۹ بوده و ارزش هر رقم ده برابر رقم سمت راست خود است. در باینری نیز اساس همین است و ارقام ۰ و ۱ پشت سر هم چیده شده‌اند و هر رقم دو برابر رقم سمت راست خود ارزش دارد.


محاسبه‌ی باینری؟

راست‌ترین رقم ارزش ۲۰ دارد، رقم سمت چپ آن ارزش ۲۱ برابر، چپی ۲۲ برابر و به همین شکل تا چپ‌ترین رقم. بنابراین ۱۱۱۱ در باینری معادل ۱*۸+۱*۴+۱*۲+۱*۱ یعنی ۱۵ است. شاید در نظر ما باینری بی‌هدف و کم‌کاربرد باشد، اما برای کامپیوتر اینگونه نیست و این مبنای اعداد بهترین روش برای ارائه‌ی اطلاعات به سخت‌افزار است.

روش دیگر مورد استفاده در برنامه‌نویسی، مبنای ۱۶ است. البته کامپیوتر مستقیما آن را درک نمی‌کند، اما برنامه‌نویسان می‌توانند از آن برای ارائه‌ی ساده‌تری از باینری استفاده کنند. در مبنای ۱۶ از ارقام ۰ تا ۹ و همچنین حروف A تا F(برای ۱۰ تا ۱۵) استفاده می‌شود.




جمع

ساده ترین عملیات ریاضی در دودویی، جمع است. جمع زدن دو عدد تک رقمی دودویی نسبتاً ساده است:

0 + 0 = 0
0 + 1 = 1
1 + 1 = 10 (رقم یک منتقل می شود)


هنگامی که نتیجه جمع از مقدار مبنا تجاوز می کند "عدد یک به سمت چپ منتقل" و به محل بعدی اضافه می شود.


1 1 1 1 (منتتقل شده)
0 1 1 0 1
+ 1 0 1 1 1
-------------------
1 0 0 1 0 0 =

شروع از ستون سمت راست، 1+1=10، رقم 1 به سمت چپ منتقل می شود و در پایین ستون 0 نوشته می شود. دومین ستون از سمت راست جمع زده می شود 1+1+0=10 دوباره 1 منتقل و 0 در پایین نوشته می شود ستون سوم، 1+1+1=11. این بار عدد 1 منتقل و درپایین ستون،1 نوشته می شود به همین صورت جواب 100100 به دست می آید.

تفریق

در تفریق هم تا حد زیادی به همان صورت کار می کنند:

0 – 0 = 0
0 – 1 = 1 (قرض گرفته شده)
1 – 0 = 1
1 – 1 = 0
* * * * (از ستون های ستاره دار قرض گرفته شده است)
1 1 0 1 1 1 0
- 1 0 1 1 1
-----------------
= 1 0 1 0 1 1 1

تفریق یک عدد مثبت از یک عدد دیگر مثل "جمع" منفی قدر مطلق آن با آن عدد است. کامپیوترها برای نمایش مقادیر منفی از مکمل عدد دو استفاده می کنند. برای جزئیات بیشتر مکمل عدد دو را ببیند.


ضرب

دو عدد &quotA&quot و &quotB&quot را با ضرب جزئی (partial) می توان در هم ضرب کرد برای هر رقم &quotB&quot حاصل ضرب آن را در عدد &quotA&quot به دست آورده و بر روی خطی جدید زیر رقم ضرب شده از &quotB&quot بنویسید. در آخر مجموع تمام ضرب های جرئی را محاسبه کنید. برای مثال دو عدد 1010 و 1011 به صورت زیر در هم ضرب می شوند:*} 1 0 1 1 (A) * 1 0 10 (B) ---------- 0 0 0 0 B به خاطر رقم صفر عدد 1 0 1 1 B به خاطر رقم یک عدد 0 0 0 0 + 1 0 1 1 ------------------ = 1 1 0 1 1 1 0


تقسیم

تقسیم در مبنای دو نیز همانند تقسیم ده دهی است.

در اینجا مقسوم علیه 1012 یا عدد5 است.

1 1 0 1 1 1 0 1
1 0 1 1 0
--------
0 1 1
0 0 0
--------
1 1 1
1 0 1
--------
0 1

همانند ضرب های طولانی ده دهی سه رقم از مقسوم جدا و آن را بر مقسوم علیه تقسیم می کنیم بنابراین در خارج قسمت عدد1 را می نویسیم عدد یک از مقسوم علیه ضرب و حاصل از سه رقم جدا شده کم می شود. رقم بعدی "1" اضافه می شود. این کار ادامه پیدا می کند تا جایی که رقم های مقسوم تمام شود.

بنابراین خارج قسمت تقسیم 11011 بر 101 برابر 1012 و باقی مانده 102 است.




اعداد مبنای شانزده

تبدیل اعداد دودویی به مبنای شانزده و برعکس تا حدودی ساده است. به این خاطر که شانزده توانی از مبنای سیستم های دودوی (2) است. به طور دقیق تر، 24 = 16، و برای نمایش یک رقم در مبنای 16 از چهار رقم در مبنای 2 استفاده می شود.

جدول زیر هر سری چهار رقمی مبنای دو و معادل مبنای شانزده آن را نمایش می دهد.

مبنای 16 مبنای 2
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F

برای تبدیل یک عدد مبنای شانزده به دودویی معادلش، به سادگی معادل ها را جایگزین کنید. مثلاً:

3A در مبنای شانزده = 0011 1010 در مبنای دو

E7 در مبنای شانزده = 1110 0111 در مبنای دو

برای تبدیل یک عدد مبنای به مبنای شانزده آن را به گروه های چهارتایی تقسیم می کنیم، اگر تعداد ارقام مضرب چهار نیست در سمت چپ به تعداد لازم 0 قرار می دهیم مبنای شانزده. برای مثال:

1010010 مبنای دو = 0101 0010 مبنای دو = 52 مبنای شانزده
11011101 مبنای دو = 1101 1101 مبنای دو = DD مبنای شانزده




مبنای هشت

اعداد دودویی به راحتی به مبنای هشت تبدیل می شوند. چون این سیستم اعداد از پایه ی 8 استفاده می کنند که توانی از دو است ( 23، بنابراین هر سه رقم مبنای 2 معادل یک رقم مبنای هشت است). برای هشت عنصر اول جدول بالا رابطه بین دودویی و مبنای هشت همانند دودویی و مبنای شانزده است.

تبدیل اعداد مبنای هشت به دو مانند مبنای شانزده به دو است.
65 مبنای هشت = 110 101 مبنای دو
17 مبنای هشت = 001 111 مبنای دو

و از دودویی به مبنای هشت:
101100 مبنای دو = 101 100 مبنای دو = 54 مبنای هشت
10011 مبنای دو = 010 011 مبنای دو = 23 مبنای هشت

امیدوارم که خوشتون اومده باشه.


http://daneshnameh.roshd.ir/mavara/mavara-index.php?page=%d8%b3%db%8c%d8%b3%d8%aa%d9%85+%d8%a7%d8%b9%d8%af%d8%a7%d8%af+%d8%af%d9%88+%d8%af%d9%88%db%8c%db%8c&SSOReturnPage=Check&Rand=0
https://www.persiantools.com/more/article/%D8%A8%D8%A7%DB%8C%D9%86%D8%B1%DB%8C-%DA%86%DB%8C%D8%B3%D8%AA/
باینریمفاهیمبرنامه نویسیجمعریاضی
برنامه نویس و گیک D:
شاید از این پست‌ها خوشتان بیاید