سؤال

لنفترض أنني أريد التحول قليلاً i مرتين إلى اليسار وقم بتخزين القيمة فيه f.

f = i << 2;

هل هذا صحيح؟كيف أفعل هذا بالضبط في C/C++؟

هل كانت مفيدة؟

المحلول

نعم.

f = i << 2

والتحولات مفيدة في عدد من العمليات قليلا twiddling.

ويستخدم هذا ليكون وسيلة رائعة لمضاعفة عدد أربعة. ومع ذلك، في هذه الأيام، المجمعين تحسين تميل إلى أن تأخذ الرعاية من ذلك بالنسبة لك.

ونضع في اعتبارنا أن يتم تجاهل اثنين من أقصى اليسار بت.

نصائح أخرى

وكما مذكرة إضافية: على الرغم من سؤالك هو الموسومة C++، وربما هو الجدير بالذكر أن C و C ++ أخذ مسارات مختلفة قليلا فيما يتعلق بتحويل القيم السلبية. في C ++ نتيجة القيام << أو >> على قيمة سالبة هو تعريف التنفيذ. في C >> غير محددة التنفيذ، في حين تنتج << <م> سلوك غير معرف .

نعم، i << 2, f = i << 2, ، أو f <<= 2 هي كل الأشياء التي قد يرغب المرء في القيام بها لتغيير البتات.

المزيد من الأشياء التي يجب وضعها في الاعتبار:

  • لديك >> أيضًا.على مستوى البت، >> يعمل بشكل مختلف للأنواع الموقعة وغير الموقعة.

  • أولوية << و >> هو أقل من ذلك + و -, ، وهو ما يخدع بعض الناس، كما قد يتصور المرء أنهم أشبه * و /.

لمن أجل اكتمال لمساعدتك في عمليات بدورك يمكنك التحقق من هذه الصفحة: <لأ href = "http://www.uow.edu.au/~lukes/TEXTBOOK/notes-cpp/expressions/ bitops.html "يختلط =" نوفولو noreferrer "> UOW TEXTBOOK -> bitops.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top