پلتفرم معاملاتی در ایران

دودویی Binary

ساختار نمایش اعداد باینری (دودویی)

binary

معنی دودویی، دوتایی
دوتایی، جفتی، مضاعف
[کامپیوتر]: دوتایی ؛ دودویی
[الکترونیک]: دودویی سیستم اعداد در مبنای دو که تنها از دو عدد 0 و 1 استفاده می کند . منطق دو دویی بر اساس یکی از دو حالت ( قطع ) یا ( وصل ) یا به تریب 0 و 1 عمل می کند . از سیستم دو دویی برای زمز گذاری عددی دراکثر رایانههای رقمی استفاده می شود . [الکترونیک]: دو دویی

consisting of two (units or components or elements or terms) or based on two; "a binary star is a system in which two stars revolve around each other"; "a binary دودویی Binary compound"; "the binary number system has two as its base"

مطالب مرتبط

binary scaler ; binary counter ; scale-of-tow circ

[الکترونیک]: مقیاس بند دودویی ؛ شمارنده دودویی ؛ مدار مقیاس بند دوتایی نوعی مقیاس بند که برای هر دو پالس ورودی یک پالس خروجی تولید می کند. به همین

binary number system; binary notation

[الکترونیک]: سیستم اعداد دودویی ؛ نمادگذرای دودویی نوعی سیستم نمادگذاری که در آن ارقام متوالی به صورت ضرایبی از توانهای متوالی مبنای 2 بیان می شوند.

row binary

[کامپیوتر]: دودویی سطری

binary

دودویی، دوتایی دوتایی، جفتی، مضاعف [کامپیوتر]: دوتایی ؛ دودویی [الکترونیک]: دودویی سیستم اعداد در مبنای دو که تنها از دو عدد 0 و

binary

binary

دودویی، دوتایی دوتایی، جفتی، مضاعف [کامپیوتر]: دوتایی ؛ دودویی [الکترونیک]: دودویی سیستم اعداد در مبنای دو که تنها از دو عدد 0 و

جعبه لام تا کام

لام تا کام نسخه صفحه کلید نیز راه اندازی شده است. شما با استفاده از کلیدهای موجود بر روی صفحه کلید دستگاهتان می توانید با وب سایت ارتباط برقرار کنید.
لیست کلید های میانبر

تبلیغات توضیحی

اقتصاد رفتاری بررسی روشهای تاثیرگذار بر رفتار کاربران
مردم همیشه به دنبال چیزهایی هستند که نمیتونن اونارو داشته باشن، و با به سادگی نمیتونن اون رو به دست بیارن.

جستجوی دودویی — به زبان ساده

در این مطلب، الگوریتم جستجوی دودویی (Binary Search) مورد بررسی قرار گرفته و پیاده‌سازی آن در زبان‌های برنامه‌نویسی گوناگون انجام شده است.

جستجوی دودویی

در جستجوی دودویی (Binary Search)‌، جستجو در یک آرایه مرتب شده، با تقسیم تکرار شونده بازه جستجو به نصف، انجام می‌شود. کار با بازه‌ای که کل آرایه را پوشش می‌دهد، آغاز می‌شود. اگر مقدار کلید جستجو برابر با عنصر میانی باشد، اندیس آن بازگردانده می‌شود. در غیر این صورت، اگر مقدار کلید جستجو کمتر از عنصری باشد که در میانه بازه قرار دارد، بازه شکسته شده و جستجو در نیمه کمتر ادامه پیدا می‌کند. در صورتی که مقدار کلید جستجو بزرگ‌تر از اندیس میانی آرایه باشد، جستجو در نیمه بیشتر (حاوی مقادیر بزرگ‌تر) آرایه ادامه پیدا می‌کند. کار شکستن آرایه به دو نیم و انتخاب نیمه‌ای که جستجو باید در آن انجام شود، مکررا و تا هنگامی که عنصر مورد نظر در آرایه یافته شود و یا مشخص شود که عنصر مورد نظر در آرایه وجود ندارد، ادامه خواهد داشت.

مثالی از جستجوی دودویی

آرایه مرتب شده []arr شامل n عنصر موجود است. هدف، نوشتن تابعی است که یک عنصر داده شده x را در آرایه مذکور ([]arr) جستجو کند. یک رویکرد ساده برای انجام این کار، استفاده از «جستجوی خطی» (Linear Search) است. پیچیدگی زمانی الگوریتم جستجوی خطی، (O(n است. رویکرد دیگر، انجام کار مشابهی با استفاده از «جستجوی دودویی» (Binary Search) است. ایده اصلی نهفته در پس جستجوی دودویی، استفاده از اطلاعات موجود در آرایه مرتب شده و کاهش پیچیدگی زمانی به (O(Log n است. در جستجوی دودویی اساسا نیمی از عناصر تنها پس از یک مقایسه حذف می‌شوند. برای انجام جستجو، از الگوریتم زیر استفاده می‌شود.

  1. x با عنصر میانی آرایه مقایسه می‌شود.
  2. اگر x با عنصر میانی آرایه یکی بود، اندیس عنصر میانی را بازگردان.
  3. در غیر این صورت، اگر x بزرگ‌تر از عنصر میانی بود، امکان دارد x در نیمه سمت راست آرایه، پس از عنصر میانی، قرار داشته باشد (شایان توجه است که همانطور که پیش‌تر اشاره شد، آرایه مرتب شده است. پس در این حالت، نیمه‌ای با مقادیر بزرگ‌تر برای ادامه جستجو گزینش می‌شود).
  4. در غیر این صورت، اگر x از عنصر میانی آرایه کوچک‌تر باشد، آرایه به دو نیمه شکسته شده و جستجو در نیمه سمت چپ (با مقادیر کوچک‌تر از میانه)، ادامه پیدا می‌کند.

جستجوی دودویی

در ادامه، پیاده‌سازی الگوریتم جستجوی دودویی به صورت بازگشتی، در زبان‌های برنامه‌نویسی C++ ،C، «جاوا» (Java)، «پایتون» (Python)، «سی‌شارپ» (#C) و PHP ارائه شده است.

دودویی (Binary)

دودویی (Binary) ممکنه به یکی از موارد زیر اشاره کنه:

  1. دودویی (Binary) یک سیستم دو پایه‌ای هست، یعنی فقط از دو عدد ۰ و ۱ تشکیل شده و توسط گتفریید لایبنیتس (Gottfried Leibniz) اختراع شد. این سیستم عددی، پایه‌ای برای همه کدهای باینریست و برای نوشتن داده‌ها از جمله دستورالعمل‌هایی که برای پردازنده‌های کامپیوتر استفاده میشن، یا متن‌های دیجیتالی که هر روز می‌بینید، استفاده میشه.

عملکرد اعداد دودویی

در باینری ۰ و ۱ برای نمایش به ترتیب OFF یا ON استفاده میشه، یعنی خاموش یا روشن بودن یک سیگنال الکتریکی دودویی رو نمایش میده.

دلیل استفاده کامپیوترها از دودویی

دودویی هنوز هم به یکی از دلایل زیر کد اصلی کامپیوتر هست.

  • دارای طراحی ساده و ظریفی هست.
  • ۰ و ۱ باینری یک روش سریع برای تشخیص وضعیت یک سیگنال الکتریکی هست.
  • قطب مثبت و منفی رسانه‌های مغناطیسی به سرعت به دودویی تبدیل میشن.
  • دودویی بهترین روش برای کنترل مدار‌منطقی هست.

نحوه محاسبه اعداد دودویی

نمودار زیر عدد دودویی ۰۱۱۰۱۰۰۰ رو نمایش میده. ستون شماره یک توان‌های عدد دو رو نمایش داده، با به توان رساندن عدد دو و جمع مقادیر ردیف دوم که در ستون باینری ۱ قرار دارن نتیجه به دست میاد. در این مثال، مقدار کل رو با خواندن نمودار از راست به چپ و جمع کردن مقدار هر ستون با ستون قبلی بدست میاریم: (۸ + ۳۲ + ۶۴) = ۱۰۴. همانطور که می‌بینید، بیت‌های ۰ رو نمی‌شماریم، چون اون‌ها “خاموش” هستن.

مثال بعدی ۱۱۱۱۱۱۱۱ بزرگترین عدد ۸ بیتی دودویی هست. حالا دوباره شروع می‌کنیم به خواندن از راست به چپ که میشه ۱ + ۲ + ۴ + ۸ + ۱۶ + ۳۲ + ۶۴ + ۱۲۸ = ۲۵۵.

توجه داشته باشید: شمارش کامپیوتر معمولا با ۰ به جای ۱ شروع میشه. بنابراین، شمارش تمام بیت‌ها برابر ۲۵۵ میشه، اما اگه از ۱ شروع کنید، واقعا ۲۵۶ میشه.

نکته: اگه شما کد باینری رو از اولین مثال (که عدد ۱۰۴ بود) بگیرید و به ASCII تبدیل کنید، حروف h کوچک رو تولید می‌کنید. برای کلمه hi، باید باینری حرف i رو که ۰۱۱۰۱۰۰۱ هست به اون اضافه کنید. با قرار دادن این دو کد کنار هم، ما ۰۱۱۰۱۰۰۰۰۱۱۰۱۰۰۱ یا ۱۰۴ و ۱۰۵ رو داریم که نشان دهنده hi است.

۲. در جلسه FTP، دودویی فرمانی هست که حالت انتقال فایل رو به دودویی تبدیل می‌کنه.

مسائل طبقه بندی دودویی (binary)، چند کلاسه (Multi Class)، چند برچسبه (Multi Label) و تفاوت آن‌ها

در بحث طبقه بندی داده‌ها یا همان Classification، ممکن است برخی از اصطلاحات به اشتباه به جای یکدیگر به کار روند و یا برخی از مفاهیم به جای برخی دیگر به کار گرفته شوند. در این درس به بررسی سه اصطلاح مهم و اصلی در طبقه بندی داده‌ها و تفاوت آن‌ها با یکدیگر می‌پردازیم.

اولین اصطلاح طبقه بندی دودویی یا Binary Classification هست. همان‌طور که از نام آن پیداست در این دسته از مسائل، ، فقط دو طبقه (دو کلاس) موجود است و هر کدام از نمونه‌ها به یکی از کلاس‌ها تعلق دارند. برای مثال فرض کنید می‌خواهید سیستمی بسازید که به صورت خودکار تمایز بین ایمیل‌های اسپم و ایمیل‌های عادی را شناسایی کند. این دودویی Binary کار را می‌توانید بر اساس متن ایمیل (با استفاده از تبدیل متن به بردار با TF-IDF) یا ویژگی‌های دیگر انجام دهید. برای این‌کار بایستی ابتدا یک مجموعه‌ی داده (Dataset) آماده کنید و این مجموعه‌ی داده‌ی آموزشی را به الگوریتم طبقه بندی تزریق کنید تا این الگوریتم یادگیری را انجام دهد. در این‌جا داده‌های شما شبیه تصویر زیر می‌شود:

همان‌طور که مشاهده می‌کنید، هر کدام از نمونه‌ها (در این‌جا هر کدام از ایمیل‌ها) به یک دسته (normal/spam) تعلق دارند. این نوع از مسائل که فقط دو طبقه داشته باشند، همان مسائل طبقه بندی دودویی هستند.

حال فرض کنید بر خلاف مثال بالا می‌خواهید هر کدام از ایمیل‌ها، به جای تعلق به یکی از دسته‌های اسپم/عادی، به یکی از دسته‌ها مانند عادی/شبکه‌های اجتماعی/تبلیغات/اسپم تعلق داشته باشند. در واقع در این مسئله بیشتر از دو طبقه (دو کلاس) داریم. به این مسائل مسائل چند کلاسه یا Multi Class می‌گویند. چیزی مانند تصویر زیر:

در این دست از مسائل نیز، هر کدام از نمونه‌ها، به یکی از طبقه‌ها تعلق دارند و الگوریتم بایستی الگوهای موجود میان متغیرهای مستقل (ویژگی‌های مسئله) را پیدا کرده تا بتواند متغیر وابسته (طبقه یا همان برچسب) را پیش‌بینی کند.

اما دسته‌ی سومی از مسائل هم وجود دارند. فرض کنید می‌خواهید یک مجموعه خبر را بر اساس متن آن‌ها، به طبقه‌های مختلف، برچسب‌زنی کنید. طبقه‌هایی مانند علمی/ورزشی/سیاسی/اقتصادی/مذهبی وجود دارند و هر کدام از خبرها می‌توانند به بیش از یک طبقه تعلق داشته باشند. مثلاً خبری در مورد «خرید سهام یک تیم ورزشی» می‌تواند هم به طبقه‌ی اقتصادی تعلق داشته باشد و هم ورزشی باشد. این گونه مسائل، مسائل طبقه بندی چند برچسبه یا Multi Label هستند که نسبت به مدل مسائل قبلی پیچیده‌تر بوده و نیاز به الگوریتم‌های پیشرفته‌تری برای حل خود دارند. تصویر زیر مثالی از مجموعه‌ی داده چند برچسبه (Multi Label) است:

سیستم اعداد دودویی : آموزش تبدیل مبنای ۲ با مثال

آموزش سیستم اعداد دودویی و تبدیل مبنای عدد مبنای 2

در مبنای 10، ده نماد جدا از هم یعنی 0 و 1 و 2 تا 9 برای تولید اعداد داریم. اما در سیستم اعداد دودویی دو نماد 0 و 1 وجود دارد. در این آموزش تبدیل مبنا دودویی را یاد گرفته و پنج مثال از تبدیل‌های عدد دودویی می‌زنیم.

عملیات ریاضی روی اعداد باینری مشابه محاسبات ریاضی‌ای است که همگی در دوران مدرسه یاد گرفته‌ایم. فقط باید مبنا و اصول سیستم دودویی را متوجه شویم تا به راحتی هر محاسبات ریاضی را انجام دهیم.

فهرست محتوای آموزش

سیستم عدد دودویی

عدد دودویی یا عدد باینری ( binary ) اعداد پراستفاده‌ای در دنیای دیجیتالی امروز هستند. کامپیوترها و دستگاه‌های دیجیتالی در مبنای دو کار می‌کنند.

در عدد دودویی دو علامت صفر و یک داریم. همه اعداد را با همین دو علامت نشان می‌دهیم. اما چطوری؟ هدف این آموزش دقیقاً همین است! 🙂 بیایید ابتدا ساختار سیستم دودویی ( عدد در مبنای 2 ) را با هم بررسی کنیم.

اعداد عادی که همیشه با آن‌ها سروکار داریم در مبنای 10 هستند. اولین رقم سمت راست یک عدد مبنای ده، دارای ارزش یک است، دومین رقم ارزش 10 2 و همینطور تا آخر.

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

10 0 10 1 10 2 10 3 10 4
30251

عدد دودویی هم به همین شکل است، با این تفاوت که پایه ارزشش 2 است. یعنی ارزش اولین رقم 2 0 ، دومین رقم 2 1 و همینطور تا انتهاست.

ساختار نمایش اعداد باینری (دودویی)

ساختار نمایش اعداد باینری (دودویی)

اگر مایلید تاریخچه شکل‌گیری کدهای دودویی را بخوانید، این صفحه از ویکی‌پدیا جای خوبی است!

تبدیل از ده‌دهی به دودویی

برای تبدیل عدد از مبنای 10 به مبنای 2 روش‌های مختلفی وجود دارد؛ اما پایه آن‌ها شبیه به هم است.

یکی از راه‌های معمول و ساده برای تبدیل دسیمال به باینری (ده‌دهی به دودویی) انجام تقسیم‌های متوالی بر 2 است.

در این تقسیم‌ها، عدد مورد نظر (در مبنای 10) بر عدد 2 تقسیم می‌شود. این تقسیم یک باقی‌مانده (0 یا 1) و یک خارج قسمت دارد. تا زمانی که خارج قسمت معادل صفر شود، تقسیم‌ها بر 2 را انجام می‌دهیم.

وقتی خارج قسمت صفر شد، باقی‌مانده‌های تقسیم‌ها را از انتها به ابتدا به دنبال هم می‌نویسیم تا عدد دودویی حاصل شود.

مثال: فرض کنید می‌خواهیم عدد 25 در مبنای 10 را به مبنای دو تبدیل کنیم. برای این کار، مشابه مراحل تصویر زیر عمل می‌کنیم:

آموزش مراحل تبدیل مبنای 10 به مبنای 2

آموزش مراحل تبدیل مبنای 10 به مبنای 2

به‌طور ساده‌تر، عملیات تصویر بالا در محاسبات باکس زیر انجام دودویی Binary شده است. اولین عدد بعد از علامت مساوی، خارج قسمت و دومین عدد، باقی‌مانده تقسیم است.

حالا باقی‌مانده‌ها را از انتها به ابتدا می‌نویسم. عدد 11001 در مبنای دو نتیجه تبدیل ده‌دهی به دودویی خواهد بود.

تبدیل عدد اعشاری به مبنای 2

برای تبدیل عدد اعشاری از مبنای 10 به مبنای 2، از ضرب متوالی عدد اعشاری در شماره‌ی مبنای جدید (یعنی 2) استفاده می‌کنیم.

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

برای مثال، فرض کنید می‌خواهیم عدد اعشاری 0.875 را از مبنای 10 به مبنای 2 ببریم. سه محاسبه زیر را انجام می‌دهیم:

در نتیجه داریم: 2( 0.111 ) = 10( 0.875 )

هنگام تبدیل مبنای بعضی اعداد، ممکن است هیچ وقت به بخش اعشاری صفر نرسیم! در اینصورت می‌گوییم این عدد دودویی مختوم نیست و بخش اعشاری تقریبی دارد.

نکته: اگر عدد شامل بخش صحیح و اعشاری باشد، باید هر بخش را جداگانه به سیستم دودویی (مبنای دو) تبدیل کنید.

دوره جامع و رایگان آموزش پایتون

تبدیل مبنای دو به مبنای 10

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

فرض کنید می‌خواهیم 110012 را تبدیل کنیم. در باکس زیر، ردیف اول، ارزش هر جایگاه هست. ردیف سوم حاصل ضرب مقدار در ارزش است.

در نهایت، جمع این مقادیر عدد ما در مبنای 10 خواهد بود؛ یعنی 2510 .

برای اینکه این محاسبه را به صورت تصویری هم داشته باشیم، تبدیل عدد 101102 در مبنای دو را در عکس زیر داریم:

آموزش مراحل تبدیل مبنای 2 به مبنای 10 (باینری به دسیمال)

آموزش مراحل تبدیل مبنای 2 به مبنای 10 (باینری به دسیمال)

با دانستن وزن هر مکان بیت دودویی، می‌توانیم بدون انجام تقسیم و به صورت حفظی یک عدد ده‌دهی را به دودویی تبدیل کنیم. 🙂

تبدیل عدد اعشاری مبنای 2 به ده

برای تبدیل عدد اعشاری از مبنای 2 هم به‌طور مشابه عمل می‌کنیم. اما توجه کنید که ارزش جایگاه در بخش اعشاری اعداد سیستم دودویی، با توان منفی است. یعنی اولین رقم بعد از اعشار معادل 2 به توان 1- ارزش داشته و رقم بعدی 2 -2 .

در محاسبه زیر، عدد اعشاری 0.1011 در مبنای 2 را به مبنای 10 تبدیل کرده‌ام:

(0.1101)2 = [1 × (2 -1 )] + [1 × (2 -3 )] + [1 × (2 -4 )] = (0.6875)10

در این آموزش سعی کردم علاوه بر معرفی ساختار اعداد در سیستم دودویی، نحوه انجام محاسبات تبدیل مبنای 2 را آموزش دهم. نمایش اعداد در مبنای دو ممکن است به روش‌های مختلفی انجام شود؛ ما سیستم‌های مختلفی برای ارزش‌گذاری بیت‌های عددی اعداد دودویی (باینری) داریم. در آموزش کدهای عددی چند نمونه پر استفاده از دنیای دیجیتال و مباحث محاسباتی را بررسی کرده‌ایم.

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

یادتان باشد که نحوه محاسبات تبدیل مبنا در هر مبنای دیگر، دقیقاً به همین شکل است! پس تبریک می‌گم، شما تبدیل مبنا را به طور کامل یاد گرفتید. 😉

اگر می‌خواهید خودتان را بسنجید، این دو سؤال را برای خودتان حل کنید:

  • عدد 14 در مبنای دو به چیست؟
  • عدد 11101 در مبنای دو معادل چه عددی در مبنای 10 است؟

این آموزش برای همیشه رایگانه! می‌تونید با اشتراک‌گذاری لینک این صفحه از ما حمایت کنید یا با خرید یه فنجون نوشیدنی بهمون انرژی بدید!

مقالات مرتبط

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

برو به دکمه بالا