سؤال

وكيف إجراء أحادي المعامل AND العملية على عددين 32-بت في C #؟

ذات صلة:

الأكثر شيوعا C # عمليات أحادي المعامل.

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

المحلول

ومع والمشغل

نصائح أخرى

استخدم المشغل &.

<اقتباس فقرة>   ومحددة مسبقا

وثنائي والمشغلين لأنواع لا يتجزأ [.] وبالنسبة لأنواع لا يتجزأ، ويحسب أحادي المعامل AND من المعاملات فيها.

MSDN .

var x = 1 & 5;
//x will = 1
const uint 
  BIT_ONE = 1,
  BIT_TWO = 2,
  BIT_THREE = 4;

uint bits = BIT_ONE + BIT_TWO;

if((bits & BIT_TWO) == BIT_TWO){ /* do thing */ }

واستخدام والمشغل (لا &&)

int a = 42;
int b = 21;
int result = a & b;

لمزيد من المعلومات قليلا هنا نتيجة جوجل الأولى:
<وأ href = "http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx" يختلط = " noreferrer نوفولو "> http://weblogs.asp.net/alessandro/archive/2007/10/02/bitwise-operators-in-c-or-xor-and-amp-amp-not.aspx

var result = (UInt32)1 & (UInt32)0x0000000F;

// result == (UInt32)1;
// result.GetType() : System.UInt32

إذا حاولت يلقي نتيجة لكثافة العمليات، وربما كنت تحصل على خطأ تجاوز بدءا من 0x80000000، دون رادع يسمح لتجنب تجاوز الأخطاء التي ليس من غير المألوف حتى عند العمل مع أقنعة بت.

result = 0xFFFFFFFF;
Int32 result2;
unchecked
{
 result2 = (Int32)result;
}

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