ماشین حساب باینری
جمع، تفریق، ضرب و تقسیم باینری را انجام دهید. بین باینری و اعشاری تبدیل کنید. ماشین حساب ریاضی رایگان. نتایج فوری را اکنون دریافت کنید.
سیستم عددی باینری: چگونه کامپیوترها شمارش می کنند
سیستم اعداد باینری (بنای-2) تنها از دو رقم استفاده می کند - 0 و 1 - به نام بیت ها (رقم های باینری). هر کامپیوتر، گوشی هوشمند و دستگاه دیجیتال به طور داخلی تمام اطلاعات را به صورت باینری ذخیره و پردازش می کند، زیرا مدارهای الکتریکی می توانند به طور قابل اعتماد دو حالت متمایز را نشان دهند: ولتاژ بالا (1) و ولتاژ پایین (0).
هر موقعیت در یک عدد باینری یک توان 2 را نشان می دهد که از راست به چپ افزایش می یابد:
| موقعیت | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|---|---|---|---|
| ارزش | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
تبدیل باینری به اعشار:هر بیت را با ارزش جای آن ضرب کنید و تمام نتایج را جمع کنید.
مثال:101101012= 1x128 + 0x64 + 1x32 + 1x16 + 0x8 + 1x4 + 0x2 + 1x1 = 128 + 32 + 16 + 4 + 1 =181
تبدیل اعشاری به باینری:به طور مکرر با 2 تقسیم کنید، باقیمانده را در هر مرحله ثبت کنید، سپس باقیمانده ها را از پایین به بالا بخوانید.
مثال: تبدیل 181 به باینری:
- 181 ÷ 2 = 90 باقیمانده1
- 90 ÷ 2 = 45 باقیمانده0
- 45 ÷ 2 = 22 باقیمانده1
- 22 ÷ 2 = 11 باقیمانده0
- 11 ÷ 2 = 5 باقیمانده1
- 5 ÷ 2 = 2 باقیمانده1
- 2 ÷ 2 = 1 باقیمانده0
- 1 ÷ 2 = 0 باقیمانده1
بقيه اش رو از پايين به بالا بخون:101101012 ✓
ریاضیات باینری: جمع، تفریق و ضرب
عددی باینری همان قواعد اعشاری را دنبال می کند، اما حمل در 2 به جای 10 اتفاق می افتد.
قوانین جمع دوگانه:0+0=0، 0+1=1، 1+0=1، 1+1=10 (حمل 1) ، 1+1+1=11 (حمل 1)
مثال: 10112 + 11012 (11 + 13 = 24)
1011 + 1101 ------ 11000
کار از راست به چپ: 1+1=10 (نوشتن 0، حمل 1) ؛ 1+0+1=10 (نوشتن 0، حمل 1) ؛ 0+1+1=10 (نوشتن 0، حمل 1) ؛ 1+1+1=11 (نوشتن 1، حمل 1) ؛ حمل نهایی می نویسد 1. نتیجه: 110002 = 24
مکمل دو (کاهش باینری):کامپیوترها اعداد منفی و تفریق را با استفاده از نمایش مکمل دو انجام می دهند. برای پیدا کردن مکمل دو یک عدد: تمام بیت ها را برگردانید، سپس 1 را اضافه کنید.
مثال: -13 در تکمیل 8 بیتی دو: +13 = 000011012 -> همه بیت ها را برگردانید -> 111100102 -> 1 اضافه کنید ->111100112
این اجازه می دهد که تفریق به عنوان جمع انجام شود: 20 - 13 = 20 + (-13).
ضرب باینریظریف است: هر محصول جزئی یا 0 (اضافه به 0) یا خود عدد (اضافه به 1) ، به سمت چپ جابجا شده است. مثال: 10112 x 1012 (11 x 5 = 55):
1011 × 101 ----- 1011 (1011 × 1) 0000 (1011 × 0، جابه جا شده) 1011 (1011 × 1، جابه جا شده دو بار) ------- 1101112 = 55
باینری در محاسبات: بیت ها، بایت ها و اندازه داده ها
درک واحدهای باینری برای هر کسی که با کامپیوترها، ذخیره سازی یا سرعت شبکه کار می کند ضروری است:
| واحد | اندازه | حداکثر ارزش (بدون امضا) | کاربرد رایج |
|---|---|---|---|
| کمی | 1 رقم باینری | 1 | پرچم بولی، ارزش باینری واحد |
| گند بزن | چهار بیت | 15 (هکس: F) | یک رقم هگزادسیمال |
| بایت | 8 بیت | ۲۵۵ | یک کاراکتر (ASCII) ، کانال رنگی |
| کلمه | 16 بیت | ۶۵۵۳۵ | سیستم های قدیمی 16 بیتی، یونیکد پایه |
| کلمه دوگانه (DWORD) | 32 بیت | ۴۲۹۴۹۶۷۲۹۵ | اعداد صحیح 32 بیتی، آدرس های IPv4 |
| Quad Word (QWORD) | 64 بیتی | ۱۸۴۴۶۷۴۷۴۷۳۷۰۹۵۱۶۱۵ | عددهای صحیح مدرن، اشاره گرها، زمانبندی ها |
مقدار رنگ:رنگ های وب از 24 بیتی RGB (8 بیتی در هر کانال) استفاده می کنند. #FF5733 = R:255, G:87, B:51. هر کانال 8 بیتی می تواند 256 سایه را نشان دهد (0 - 255). کل رنگ های ممکن: 2563 =۱۶۷۷۷۲۱۶(حدود 16.7 میلیون)
مجوزهای فایل در یونیکس/لینوکس:rwxr-xr-- = 111 101 100 در باینری = 7، 5، 4 در اکتال = chmod 754. هر مجموعه 3 بیت نشان دهنده خواندن (r=4) ، نوشتن (w=2) و اجرای (x=1) مجوز برای مالک، گروه و دیگران است.
عملیات بیت و کاربردهای آن
عملیات بیت به بیت ، بیت های فردی را در اعداد صحیح دستکاری می کنند. آنها برای برنامه نویسی سطح پایین ، رمزنگاری ، برنامه نویسی شبکه و کد مهم عملکرد اساسی هستند.
| عملیات | نماد | رفتار | مثال |
|---|---|---|---|
| و | & | 1 اگر هر دو بیت 1 باشند | 1010 و 1100 = 1000 |
| OR | | | 1 اگر هر بیت 1 باشد | ۱۰۱۰. ۱۱۰۰ = ۱۱۱۰ |
| XOR | ^ | 1 اگر بیت ها متفاوت باشند | ۱۰۱۰ ^ ۱۱۰۰ = ۰۱۱۰ |
| نه | ~ | همه بيس ها رو برگردون | ~1010 = 0101 |
| به سمت چپ | << | بیت های شیفت به چپ (x2 هر شیفت) | 1011 << 1 = 10110 (x2) |
| به سمت راست | >> | بیت های شیفت به سمت راست (÷2 در هر شیفت) | 1011 >> 1 = 0101 (÷2) |
کاربرد های عملی:
- پنهان کردن بیت:بررسی کنید که آیا بیت مشخصی تنظیم شده است:
if (flags & 0b0100) { ... }-- بررسی می کند که بیت 2 برابر با 1 است. - کمی تنظیم می کنم:
flags = flags | 0b0100-- بیت 2 را بدون توجه به مقدار فعلی به 1 می گذارد. - يه ذره روشن کنم:
flags = flags & ~0b0100-- بیت 2 را به 0 پاک می کند. - ضرب/تقسیم سریع به توان 2:
n << 3= n x 8n >> 2= n ÷ 4. تغییر بیت عملیات سطح CPU است که به طور قابل توجهی سریعتر از ضرب است. - چک کردن جفت / عجیب:
if (n & 1) { /* odd */ }-- آخرین بیت هر عدد جفت همیشه 1 است.
مقایسه سیستم های عددی: باینری، اوکتال، اعشاری، هگزادسیمال
علوم کامپیوتری از چهار سیستم عددی استفاده می کند که هر کدام برای زمینه های مختلف مناسب هستند:
| سیستم | پایه | ارقام | کاربرد رایج |
|---|---|---|---|
| باینری (بنای-2) | 2 | 0، 1 | عملیات پردازنده، ذخیره سازی، منطق |
| اکتال (بنای 8) | 8 | 0 - 7 | مجوزهای فایل یونیکس، سیستم های قدیمی تر |
| اعشاری (بنای 10) | 10 | 0 تا 9 | اعداد قابل خواندن توسط انسان |
| هگزادسیمال (بنای 16) | 16 | 0 تا 9، A تا F | آدرس های حافظه، کد های رنگی، کد ماشین |
تبدیل سریع: باینری هکس(4 رقم باینری = 1 عدد هکس):
| باینری | هیکس | اعشاری | باینری | هیکس | اعشاری |
|---|---|---|---|---|---|
| 0000 | 0 | 0 | 1000 دلار | 8 | 8 |
| 0001 | 1 | 1 | صد و یک | 9 | 9 |
| 0010 | 2 | 2 | ۱۰۱۰ | A | 10 |
| 0011 | 3 | 3 | ۱۰۱۱ | B | 11 |
| 0100 | 4 | 4 | ۱۱۰۰ | C | 12 |
| 0101 | 5 | 5 | ۱۱۰۱ | D | 13 |
| 0110 | 6 | 6 | ۱۱۱۰ | E | 14 |
| 0111 | 7 | 7 | ۱۱۱۱ | F | 15 |
این گروه بندی 4 بیتی هکس را به عنوان یک نماد فشرده برای داده های باینری بسیار مفید می کند: ارزش 32 بیتی11001010 00111111 10110101 00001100خیلی راحت تر میشه نوشتCA3FB50C.
باینری در شبکه سازی: آدرس های IP و ماسک های زیر شبکه
درک باینری برای مهندسی شبکه ضروری است چون آدرس های IPv4 اساساً اعداد باینری ۳۲ بیتی هستند، و زیر شبکه -- فرآیند تقسیم شبکه ها -- کاملاً به عملیات باینری متکی است.
یک آدرس IPv4 مثل192.168.1.100نماد قابل خواندن انسان برای ارزش باینری 32 بیتی است:
11000000.10101000.00000001.01100100
A ماسک زیر شبکهتعیین می کند که کدام بخش از آدرس شبکه را شناسایی می کند و کدام میزبان را شناسایی می کند. ماسک 255.255.255.0 در باینری:
11111111.11111111.11111111.00000000
bitwise AND از آدرس IP و ماسک زیر شبکه آدرس شبکه را می دهد:
| جزء | اعشاری | باینری |
|---|---|---|
| آدرس IP | 192.168.1.100 | 11000000.10101000.00000001.01100100 |
| ماسک زیر شبکه | 255.255.255.0 | 1111111111111111111111111111 |
| شبکه (و) | 192.168.1.0 | 11000000.10101000.00000001.00000000 |
نماد CIDR (به عنوان مثال ، / 24) به شما می گوید که چه تعداد 1-بیت پیشرو در ماسک زیر شبکه وجود دارد. ماسک / 24 دارای 24 واحد و پس از آن 8 صفر است ، که به 28 - 2 = 254 آدرس میزبان قابل استفاده در هر زیر شبکه اجازه می دهد. ماسک / 16 به 65،534 میزبان اجازه می دهد. مهندسان شبکه روزانه از ریاضیات ذهنی باینری برای برنامه ریزی زیر شبکه ها ، محاسبه آدرس های پخش و عیب یابی مسیریابی استفاده می کنند.
باینری در رمزنگاری و امنیت
الگوریتم های رمزگذاری مدرن به طور کامل در سطح باینری کار می کنند و بیت های فردی را از طریق ترکیبی از XOR ، تغییر بیت و عملیات جایگزینی دستکاری می کنند. درک باینری دروازه ای برای درک نحوه عملکرد امنیت دیجیتال است.
رمزنگاری XOR (پایه رمزنگاری های مدرن):XOR دارای یک خاصیت منحصر به فرد است - استفاده از آن دو بار با همان کلید، مقدار اصلی را باز می گرداند: A K K = A. این باعث می شود XOR پایه رمزنگاری جریان و پد های یک بار باشد.
مثال: رمزگذاری بایت 01001101 (حرف "M" در ASCII) با کلید 10110010:
- متن ساده: 01001101
- کلید: 10110010
- XOR (شفر شده): 11111111
- XOR دوباره با همان کلید (decrypt): 01001101 = "M"
اندازه کلید در رمزگذاری مدرن:AES-128 از یک کلید 128 بیتی استفاده می کند ، به این معنی که 2128 ~ 3.4 x 1038 کلید ممکن وجود دارد - بیش از تعداد اتم های موجود در جهان قابل مشاهده. AES-256 از کلید های 256 بیتی با 2256 امکان استفاده می کند. حتی سریعترین ابر رایانه ها نمی توانند این فضاهای کلیدی را به صورت وحشیانه اعمال کنند. هر بیت اضافی فضای جستجو را دو برابر می کند ، به همین دلیل طول کلید در رمزنگاری به طور نمایی مهم است.
توابع هش مانند SHA-256 خروجی باینری 256 بیتی (32 بایت) را از هر ورودی تولید می کنند. حتی یک تغییر تک بیتی در ورودی یک هش کاملاً متفاوت تولید می کند - ویژگی ای به نام "اثر لاغری" که هش ها را برای تأیید یکپارچگی داده ها ، ذخیره رمز عبور و تقویت فناوری بلاکچین مفید می کند.
محاسبات باینری و کوانتومی:در حالی که رایانه های کلاسیک از بیت های باینری (0 یا 1) استفاده می کنند، رایانه های کوانتومی از کیوبیت هایی استفاده می کنند که می توانند به طور همزمان در یک حالت فوق العاده از هر دو حالت وجود داشته باشند. یک کلید 256-بیتی کلاسیک دارای 2256 مقدار ممکن است که باید به صورت متوالی بررسی شود؛ یک رایانه کوانتومی که الگوریتم گروور را اجرا می کند می تواند این فضا را در √(2256) = 2128 عملیات جستجو کند. به همین دلیل رمزنگاری پس از کوانتومی در حال توسعه است - برای ایجاد طرح های رمزگذاری مبتنی بر باینری که حتی در برابر دشمنان کوانتومی ایمن باقی می مانند.
سوالات متداول
چرا کامپيوترها به جاي اعشاري از دودويي استفاده ميکنن؟
مدارهای الکترونیکی با تنها دو حالت متمایز قابل اعتماد هستند: روشن (والتس بالا ~ 1) و خاموش (والتس پایین ~ 0). نشان دادن 10 حالت متمایز برای اعشاری به کنترل ولتاژ دقیق تر نیاز دارد و به سر و صدا الکتریکی حساس تر خواهد بود. سادگی باینری به میلیاردها ترانزیستور اجازه می دهد تا با سرعت گیگاهرتز با میلیاردها عملیات در ثانیه به طور قابل اعتماد کار کنند.
بزرگترین عددی که یک بایت می تواند داشته باشد چیست؟
یک بایت (8 بیت) می تواند 28 = 256 مقدار مختلف را نشان دهد. برای عدد صحیح بدون علامت: 0 تا 255. برای عدد صحیح با علامت (تكمیل دو): -128 تا 127. حداکثر مقدار بایت بدون علامت در باینری 111111112 = 255 است؛ در هکس FF است.
چطور می تونم یک عدد منفی رو به عدد باینری تبدیل کنم؟
از مکمل دو استفاده کنید: (1) نسخه مثبت را به باینری تبدیل کنید، (2) همه بیت ها را (0->1، 1->0) برگردانید، (3) 1 اضافه کنید. مثال: -13 در 8 بیتی: +13 = 000011012, flip bits = 111100102, add 1 = 111100112. این همان شیوه ای است که تمام رایانه های مدرن اعداد صحیح منفی را ذخیره می کنند.
تفاوت بین باینری و هگزادسیمال چیست؟
هر دو سیستم عددی موقعیتی هستند که در محاسبات مورد استفاده قرار می گیرند. باینری (بنای-2) تنها از 0 و 1 استفاده می کند - زبان بومی رایانه ها. هگزادسیمال (بنای-16) از 0 - 9 و A - F به عنوان یک نماد فشرده برای باینری استفاده می کند - هر 4 رقم باینری دقیقاً با 1 رقم هکس مطابقت دارد. هکس برای آدرس های حافظه ، کد های رنگی (#RRGGBB) و کد ماشین استفاده می شود زیرا از باینری خام فشرده تر و قابل خواندن تر است.
عملیات بیت به بیت برای چه استفاده می شود؟
عملیات بیت به بیت (AND، OR، XOR، NOT، shifts) ، بیت های فردی را در اعداد صحیح دستکاری می کنند. کاربردهای رایج: پرچم های بیت و مجوزها (Unix chmod) ، بررسی حتی / عجیب (n & 1) ، ضرب / تقسیم سریع با قدرت 2 (تغییر بیت) ، الگوریتم های رمزگذاری ، توابع هش ، تشخیص خطای CRC ، ماسک های زیر شبکه و توسعه بازی (تخزین حالت کامپکت در یک عدد صحیح واحد).
نقطه شناور باینری چیست و چرا 0.1 + 0.2 ≠ 0.3 در برنامه نویسی؟
بسیاری از رایانه های مدرن از IEEE 754 دوگانه نقطه شناور استفاده می کنند که کسر های اعشاری را به صورت دوگانه نشان می دهد. همانطور که 1/3 = 0.3333 ... نمی تواند به طور دقیق در اعشاری نشان داده شود ، 1/10 نیز نمی تواند به طور دقیق در دوگانه نشان داده شود (این یک کسر دوگانه بی نهایت تکراری است). این باعث می شود که خطاهای کوچک گردآوری شود: در اکثر زبان ها ، 0.1 + 0.2 = 0.30000000000000004 . برای محاسبات دقیق مالی از ریاضی عدد صحیح (کار در سنت ، نه دلار) یا کتابخانه های اعشاری استفاده کنید.
چگونه باینری در ذخیره سازی داده و اندازه فایل استفاده می شود؟
ذخیره سازی در بایت ها (8 بیت) ، کیلوبایت ها (1024 بایت) ، مگابایت ها (1024 کیلو بایت) ، گیگابایت ها (1024 مگابایت) و غیره اندازه گیری می شود. توجه: تولید کنندگان هارد دیسک از پیشوند SI استفاده می کنند (1 کیلو بایت = 1000 بایت) در حالی که سیستم عامل ها از پیشوند های باینری استفاده می کنند (1 کیلو بایت = 1024 بایت) ، که باعث ایجاد اختلاف "فضای گمشده" در هنگام خرید ذخیره سازی می شود. درایو 1 TB در ویندوز ~ 931 GiB را نشان می دهد زیرا 1,000,000,000,000 ÷ 1,073,741,824 ~ 931 است.
کد باینری اعشاری (BCD) چیست؟
BCD هر رقم اعشاری را به عنوان یک گروه باینری 4 بیتی کدگذاری می کند: 0=0000، 1=0001، ..., 9=1001. بنابراین اعشاری 93 در BCD 1001 0011 است. BCD در سیستم های مالی استفاده می شود (از اشتباهات گردآوری نقطه شناور جلوگیری می کند) ، ساعت های دیجیتال و نمایشگرها (شاشه های 7 بخش مستقیماً BCD را رمزگشایی می کنند) و سیستم های بزرگ قدیمی. این کار کمتر از باینری خالص است اما خطاهای تبدیل اعشاری به باینری را در برنامه های حیاتی از بین می برد.