الخطأ الأول الذي علمني احترام عرض البتات كان علامة الإذن التي استمرت في مسح نفسها. كنت أقوم بإدخال قناع بت في عمود عدد صحيح، وفي كثير من الأحيان يتم إعادة تعيين الحقل بالكامل. كان السبب محرجًا بمجرد أن رأيته: كنت أفكر في البتات كما لو كانت تعيش في 32 فتحة، ولكن القيمة قد تم توسيعها بالفعل ولم يكن هناك أي شيء ضال في مكان ما في الأعلى قد قلب البتات التي لم أحسبها أبدًا. لقد أصلحته من خلال الجلوس باستخدام آلة حاسبة أظهرت لي البتات الفعلية بالعرض الفعلي، وليس العلامة العشرية المرتبة التي طبعتها لغتي. يدور هذا الدليل حول هذه العادة، باستخدام حاسبة ثنائية على Toolz.dev، ولماذا يؤدي إجراء العمليات الحسابية على مستوى البت حيث يمكنك رؤية كل قاعدة في وقت واحد إلى توفير ساعات من التخمين.
ليرة تركية؛DR: تقوم الآلة الحاسبة الثنائية بإجراء العمليات الحسابية (الإضافة والطرح والضرب والقسمة) وعمليات البت (AND أو OR أو XOR أو NOT أو التحولات) على الأعداد الصحيحة المكتوبة بالثنائية أو الثماني أو العشرية أو السداسية، وتظهر النتيجة في جميع القواعد الأربع في وقت واحد. الحساب دقيق في أي حجم؛ تعتمد عمليات البت على عرض البت المختار. حاسبة ثنائية يقوم بذلك، بالكامل في متصفحك، ويبلغ عن القراءات الموقعة وغير الموقعة للحصول على نتائج البت.
ما هي الآلة الحاسبة الثنائية؟
الآلة الحاسبة الثنائية هي أداة تعمل على الأعداد الصحيحة في الأساس الثاني، لكن تلك المفيدة لا تقتصر على الأساس الثاني على الإطلاق. اخترت القاعدة التي تفكر فيها، ثنائية أو ثماني أو عشرية أو سداسية عشرية، واكتب أرقامك، واختر عملية، واقرأ الإجابة. تُظهر الأشياء الجيدة تلك الإجابة في كل قاعدة في وقت واحد، لذلك لا تقم أبدًا بإجراء تحويل منفصل للتحقق من صحة ما حصلت عليه.
السبب وراء أهمية ذلك هو أن العمل منخفض المستوى يتقاطع باستمرار بين القواعد. اللون سداسي عشري، وقناع الإذن ثنائي في رأسك ولكنه عشري في قاعدة البيانات، وقيمة الشبكة ثماني في تكوين واحد وعشري في تكوين آخر. يؤدي إجراء العمليات الحسابية في مكان واحد، مع ظهور جميع التمثيلات، إلى إزالة فئة كاملة من أخطاء النسخ. أنت لا تقوم بنسخ قيمة سداسية إلى آلة حاسبة عشرية وتأمل أن تقوم بتحويلها بشكل صحيح أولاً.
في Toolz.dev يكون التدفق قصيرًا. اختر قاعدة الإدخال. اكتب القيمة الأولى. اختر عملية. اكتب القيمة الثانية. تظهر النتيجة في الأشكال الثنائية والثمانية والعشرية والسداسية معًا، وبالنسبة لعمليات البت، فإنها تعرض أيضًا القراءة الموقعة وتخطيط البت بالعرض الذي اخترته.
ما هي العمليات التي تدعمها؟
عائلتين، وإبقائهما مستقيمين هي اللعبة بأكملها. العمليات الحسابية هي الجمع والطرح والضرب والقسمة والوحدات. تعمل هذه على القيمة الرقمية الحقيقية، لذا فهي تتصرف مثل الرياضيات العادية ولا تهتم بعرض البت. تقوم القسمة بإرجاع حاصل الأعداد الصحيحة والإبلاغ عن أي باقي، وتقوم الوحدة بإرجاع الباقي فقط، وهو التمييز الذي غالبًا ما يحصل عليه الأشخاص بشكل عكسي.
عمليات البت هي AND، OR، XOR، NAND، NOR، XNOR، NOT، والتحولات اليسرى واليمنى. تعمل هذه على البتات الأولية داخل سجل ثابت، لذا تعتمد إجابتها كليًا على مدى اتساع هذا السجل. و، OR، وXOR هما الثلاثة اليومية: ويخفي البتات، أو يضبط البتات، ويقوم XOR بتبديلها. النماذج المنفية، NAND، NOR، وXNOR، هي مكملاتها ضمن العرض. لا يقلب كل بت. تعمل التحولات على تحريك النمط بأكمله يسارًا أو يمينًا بعدد من المواضع، مما يؤدي إلى إسقاط البتات التي تسقط من النهاية.
إليك النموذج العقلي السريع الذي أستخدمه عند تحديد النموذج الذي أريده
| عملية | رمز | عائلة | الاستخدام النموذجي |
|---|---|---|---|
| إضافة / طرح | + / - | حسابي | الرياضيات الصحيحة العادية، بأي حجم |
| اضرب / اقسم | × / ear | حسابي | تقارير القسمة حاصل والباقي |
| مودولو | عصري | حسابي | الباقي فقط، على سبيل المثال الفهرسة الملتفة |
| و | &؛ | Bitwise | قطع القناع، واختبر العلم |
| أو | | | Bitwise | ضع الأعلام، واجمع الأقنعة |
| XOR | ^ | Bitwise | تبديل البتات والتكافؤ الرخيص والمقايضات |
| لا | ~ | Bitwise | عكس كل بت داخل العرض |
| التحول إلى اليسار/اليمين | <؛<؛ />؛>؛ | Bitwise | اضرب أو اقسم على قوى حقلين، احزم الحقول |
لماذا أحتاج إلى اختيار عرض قليلا؟
هذا هو السؤال الذي يعرقل الجميع الجدد في الرياضيات، وهو السؤال الذي تعنّق الآلة الحاسبة أكثر من غيره. الحساب لديه إجابة واضحة بغض النظر عن الحجم: خمسة زائد ثلاثة يساوي ثمانية سواء تخيلتها في بايت أو كلمة مكونة من 64 بت. لكن ليس لدى البت أي إجابة على الإطلاق حتى تعرف عدد البتات الموجودة. ليس من خمسة هو "؛ اقلب كل بت،"؛ وتعتمد النتيجة على ما إذا كان هناك ثمانية بتات أو أربعة وستين لقلبها.
التحولات لها نفس التبعية من الاتجاه الآخر. قم بتحويل القيمة إلى اليسار بعيدًا بدرجة كافية وستخرج البتات من الحافة العلوية. يعتمد اختفائها أو التفافها على حجم السجل. يجيب نوع عدد صحيح ذو عرض ثابت في C أو Java أو Go أو Rust على ذلك عن طريق تحديد العرض مقدمًا: أ uint8 هو ثمانية بت، أ uint32 هو اثنان وثلاثون، وكل عملية بت تحدث داخل هذا المربع. تعكس الآلة الحاسبة ذلك بالضبط من خلال السماح لك باختيار 8 أو 16 أو 32 أو 64 بت، وبالتالي فإن النتيجة تتطابق مع ما سينتجه الكود الفعلي الخاص بك بدلاً من التجريد المثالي ذي العرض اللانهائي.
اختيار العرض الخاطئ ليس خطأ تقريب، بل هو إجابة مختلفة. ليس خمسة هو 250 في ثمانية بتات و4294967290 في اثنين وثلاثين. كلاهما صحيح لعرضهما، ولا يصح أي منهما للآخر. إن اعتياد ضبط العرض ليتناسب مع نوع بياناتك هو النظام الوحيد الأكثر فائدة الذي تشجعه هذه الأداة.
كيف يظهر مكمل two'؛s في النتائج؟
يمثل كل معالج تقريبًا أعدادًا صحيحة موقعة باستخدام يكمل اثنان و#39؛s، والآلة الحاسبة تتبع نفس الاصطلاح بحيث يتطابق مخرجاتها مع أجهزتك. في تكملة two'؛s، يحمل الجزء العلوي من السجل وزنًا سالبًا، لذا فإن نمط ثمانية بتات من 11111010 يقرأ 250 إذا تعاملت معه على أنه غير موقع، أو كـ -6 إذا قرأت الجزء العلوي كعلامة.
ولهذا السبب تقوم الأداة بالإبلاغ عن كلتا القراءتين للحصول على نتيجة البت. عندما لا تقوم بتشغيل خمسة في ثمانية بتات، تحصل على نمط البت 11111010. تعرض الآلة الحاسبة القيمة غير الموقعة 250، والقيمة الموقعة -6، والتخطيط الثنائي، بحيث يمكنك أن ترى أنها نفس البتات التي يتم تفسيرها بطريقتين. هذه القراءة المزدوجة هي بالضبط ما تحتاجه عندما تتقاطع القيمة بين نوع موقع وغير موقع في التعليمات البرمجية الخاصة بك، وهو مصدر كلاسيكي لـ "؛ مستحيل وحاصل؛ الأرقام التي تظهر في السجلات.
تتبع النتائج الحسابية نفس القاعدة عندما تصبح سالبة. اطرح اثني عشر من خمسة والإجابة الحقيقية هي -7، والتي تظهرها الآلة الحاسبة بالنظام العشري مع علامة الطرح، بينما تستخدم أشكالها الثنائية والثمانية والسداسية النمط المكمل two'؛s ضمن العرض الذي اخترته، 11111001 في ثمانية بتات. إن رؤية القيمة السالبة ونمط البت الخاص بها جنبًا إلى جنب هو الطريقة المجردة للفكرة "؛ العلامة هي مجرد البتة العليا والاقتباس؛ وأخيرا النقرات.
كيف يمكنني جمع أو طرح الأرقام الثنائية يدويًا والتحقق منها هنا؟
الجمع الثنائي يتبع نفس قواعد الحمل مثل النظام العشري، مع أبجدية أصغر. صفر زائد صفر يساوي صفر، وصفر زائد واحد يساوي واحدًا، وواحد زائد واحد يساوي صفرًا يحمل واحدًا، وواحد زائد واحد زائد حمل واحد. لذا فإن 1010 زائد 1100 يعمل عمودًا تلو الآخر من اليمين: 0+0 يساوي 0، 1+0 يساوي 1، 0+1 يساوي 1، 1+1 هو 0 يحمل 1، ويصبح الحمل هو البتة الرائدة، مما يعطي 10110، وهو 22 في النظام العشري. يؤكد ذلك في الآلة الحاسبة في كل قاعدة مرة واحدة، وهذه هي الطريقة التي أتحقق بها من حساب يدي عندما أقوم بإعادة تعلمها لإجراء مقابلة أو تدريسها لشخص ما.
الطرح هو المكان الذي يكسب فيه مكمل two'؛s الاحتفاظ به. بدلاً من الاقتراض عبر الأعمدة، تقوم أجهزة الكمبيوتر بالطرح عن طريق إضافة السالب، ويتم تشكيل السالب عن طريق عكس البتات وإضافة واحدة. نادرًا ما تحتاج إلى القيام بذلك يدويًا، ولكنه يفسر سبب قدرة الآلة الحاسبة على الطرح في المنطقة السالبة بشكل نظيف: 5 ناقص 12 يصبح 5 بالإضافة إلى two'؛s-مكمل 12، والنتيجة هي النمط -7 الموصوف أعلاه. إذا كنت تريد نقل قيمة واحدة بين القواعد دون إجراء أي حسابات عليها، فإن محول رقم قاعدة هي الأداة المصاحبة، و مترجم ثنائي يتعامل مع الحالة التي تقوم فيها بتحويل النص إلى بتات بدلاً من إجراء العمليات الحسابية.
متى تكون عمليات البت مهمة بالفعل؟
في كثير من الأحيان أكثر مما يتوقعه المبتدئون، وفي الأماكن التي ليست واضحة "؛ مستوى منخفض."؛ أنظمة الأذونات هي الحالة الكلاسيكية: مجموعة من العلامات المعبأة في عدد صحيح واحد، حيث يمكنك منح إذن، ومع تكملة لإلغائه، واختبار واحد. تستخدم تبديل الميزات وأوضاع ملفات Unix وخرائط تسجيل الأجهزة نفس النمط. إذا سبق لك أن رأيت قيمة مثل 0o755 أو ثابتًا محددًا على أنه 1 << 3، لقد قابلت التعبئة قليلا.
يظهر XOR في الحيل الرخيصة والخوارزميات الحقيقية على حد سواء: التبديل قليلاً، وتكافؤ الحوسبة، والمبادلة الكلاسيكية بدون درجة حرارة. تتضاعف التحولات وتقسم على قوى اثنين بشكل أسرع بكثير من الضرب العام، وتقوم بتعبئة عدة حقول صغيرة في كلمة واحدة، وهي الطريقة التي تظل بها قيم الألوان ورؤوس الشبكة وتنسيقات التسلسل المدمجة صغيرة. لقد قمت بضرب هذه العناصر باستمرار عبر المكدس، بدءًا من واجهة برمجة تطبيقات Laravel التي تخزن علامات الأدوار كقناع نقطي إلى لوحة React التي تقرأ RGBA من عدد صحيح معبأ. إن فهم العمليات هو استثمار صغير يؤتي ثماره في كل مكان، وكتبت عن كيفية ملاءمتها لمجموعة أوسع في أدوات إنتاجية المطور قطعة.
الإخفاقات الدقيقة هي ما يجعل الآلة الحاسبة المرئية تستحق الاستخدام. القناع المطبق بعرض خاطئ يحافظ بصمت على البتات التي لم تكن تنوي إسقاطها أو يسقطها. يؤدي التحول الذي يفترض أن 32 بت يتصرف بشكل مختلف عند 64. تنتج القيمة الموقعة ANDed مقابل قناع غير موقع رقمًا يبدو مستحيلًا حتى ترى البتات المكملة two'؛s. إن مشاهدة تغيير تخطيط البت أثناء ضبط العرض يحول تلك الأخطاء من ألغاز إلى أخطاء واضحة.
هناك زاوية تعليمية هنا أيضًا. عندما أشرح أقنعة البت لشخص جديد، فإن الأرقام العشرية عديمة الفائدة: 12 و10 كونها 8 لا تعني شيئًا حتى تصطف 1100 و1010 وتشاهد AND وتحتفظ فقط بالعمود حيث يكون كلاهما 1. لأن الآلة الحاسبة تعرض التخطيط الثنائي بجانب العلامة العشرية والثمانية والسداسية، فإنها تقوم بهذه المحاذاة نيابةً عنك، وتتوقف العملية عن كونها قاعدة للحفظ وتصبح شيئًا يمكنك رؤيته. وينطبق الشيء نفسه على التحولات، حيث يؤدي إظهار أن الإزاحة اليسرى بمقدار واحد إلى مضاعفة القيمة أثناء تحريك كل بتة بعمود واحد متبقي إلى ربط المعنى الحسابي بآلية مستوى البت بطريقة لا يستطيعها رقم واحد أبدًا.
ما هي الحدود، وهل بياناتي خاصة؟
الجانب الحسابي ليس له حد للحجم بشكل فعال. تستخدم الآلة الحاسبة JavaScript'؛s بيج إنت، نوع عدد صحيح عشوائي الدقة موحد في ECMAScript، لذا فإن إضافة أو ضرب أرقام تحتوي على عشرات الأرقام يظل دقيقًا دون تجاوز صامت. هذه ميزة حقيقية مقارنة بالآلات الحاسبة المبنية على أرقام الفاصلة العائمة العادية، والتي تفقد دقتها بعد حوالي خمسة عشر رقمًا ولا يمكنها تمثيل أعداد صحيحة كبيرة تمامًا على الإطلاق.
يتم تحديد جانب البت عمدًا بالعرض الذي تختاره، لأن هذه هي النقطة: عملية العرض الثابت تكون منطقية فقط داخل سجل ثابت. إذا قمت بإدخال قيمة أكبر مما يمكن أن يحمله العرض، فإن الآلة الحاسبة تقللها إلى هذا العرض وتحذرك، لذلك لا يحدث الاقتطاع أبدًا بصمت. يتم تحديد حدود التحولات بحد أقصى معقول بحيث لا يمكن لمبلغ الإزاحة الجامح تعليق الصفحة.
فيما يتعلق بالخصوصية، كل شيء يعمل في متصفحك. لا يتم تحميل أي شيء تكتبه أو تسجيله أو تخزينه، وتستمر الأداة في العمل إذا قمت بقطع الاتصال بالإنترنت بعد تحميل الصفحة. وهذا مهم أكثر مما يبدو: القيم التي يديرها الأشخاص من خلال الآلة الحاسبة ذات البت هي غالبًا أقنعة الأذونات أو الرموز المميزة أو عناوين الأجهزة من الأنظمة التي يفضلون عدم لصقها في خادم لا يتحكمون فيه. إذا كنت تهتم بالأدوات التي تحتفظ ببياناتك على جهازك، فإن خصوصية البيانات في الأدوات عبر الإنترنت يغطي الدليل كيفية التمييز بين الأدوات من جانب العميل والأدوات التي تتصل بالمنزل. بالنسبة للعمل المجاور منخفض المستوى، فإن محول IEEE 754 و ال جدول ASCII تقريب المجموعة.
الأسئلة المتداولة
كيف يمكنني إضافة رقمين ثنائيين؟
اضبط قاعدة الإدخال على ثنائي، واكتب الرقم الأول، واختر إضافة، واكتب الرقم الثاني، واقرأ النتيجة. على سبيل المثال، 1010 زائد 1100 هو 10110، والذي تظهره الأداة أيضًا على أنه 22 بالنظام العشري، و26 بالنظام الثماني، و16 بالنظام السداسي. الحساب دقيق بأي طول.
ما الفرق بين العمليات الحسابية وعمليات البت؟
تعمل العمليات الحسابية (إضافة، طرح، ضرب، قسمة، معامل) على القيمة الرقمية الحقيقية وهي مستقلة عن عرض البت. تعمل عمليات Bitwise (AND، OR، XOR، NOT، والتحولات) على البتات الأولية داخل سجل العرض الثابت، لذا تعتمد نتيجتها على ما إذا كنت تختار 8 أو 16 أو 32 أو 64 بت.
لماذا أحتاج إلى اختيار عرض قليلا؟
لا تحتوي عمليات NOT وShift على إجابة محددة فقط بمجرد معرفة حجم السجل، لأنها تعتمد على البتات الموجودة وأيها تقع خارج النهاية. إن تحديد 8 أو 16 أو 32 أو 64 بت يجعل الآلة الحاسبة تتطابق مع كيفية تصرف نوع عدد صحيح معين في لغة برمجة حقيقية.
كيف تتعامل الآلة الحاسبة مع النتائج السلبية؟
تظهر النتائج الحسابية السالبة بعلامة ناقص بالنظام العشري، وتستخدم أشكالها الثنائية والثمانية والسداسية تكملة two'؛s ضمن العرض المحدد. بالنسبة لنتائج البت، تقوم الأداة بالإبلاغ عن كل من القيمة غير الموقعة والقيمة التكميلية الموقعة two'؛s.
هل يمكنني مزج القواعد، مثل إضافة رقم سداسي عشري إلى رقم عشري؟
تتم قراءة كلا المعاملين في القاعدة المفردة التي تحددها، لذلك لا يمكنك مزج القواعد في عملية حسابية واحدة. للجمع بين قيمة سداسية وعشرية، قم أولاً بتحويل أحدهما، ثم أدخل كليهما في نفس القاعدة. يتم عرض النتيجة دائمًا في جميع القواعد الأربع.
ماذا تفعل الآلة الحاسبة عندما أقسم؟
يقوم القسمة بإرجاع حاصل العدد الصحيح، وإذا لم يكن القسمة دقيقة، تقوم الأداة بالإبلاغ عن الباقي كملاحظة. للحصول على الباقي من تلقاء نفسه، استخدم عملية Modulo بدلاً من ذلك، والتي تُرجع الباقي فقط.
ما هو حجم الأرقام التي يمكن أن تكون؟
يستخدم الحساب JavaScript BigInt، لذلك تتم معالجة الأرقام التي تحتوي على عشرات الأرقام تمامًا دون تجاوز السعة. عمليات Bitwise محدودة بالعرض المختار؛ يتم تقليل القيم التي تتجاوزه إلى هذا العرض، وتحذرك الأداة عند حدوث ذلك.
هل يتم إرسال بياناتي إلى أي مكان؟
لا. يتم تشغيل كل عملية حسابية كجافا سكريبت في متصفحك. لا يتم نقل أي شيء تكتبه أو تسجيله أو تخزينه، وتستمر الأداة في العمل إذا قمت بقطع الاتصال بالإنترنت بعد تحميل الصفحة.
جرب الرياضيات بنفسك مجانًا حاسبة ثنائية. يتعامل مع العمليات الحسابية وعمليات البت عبر الثنائية والثمانية والعشرية والسداسية، بالكامل في متصفحك، دون تحميل أي شيء.



