سؤال

المشكلة هي أن لدي مجموعة من البايت مع 200 فهارس وأريد فقط التحقق من ذلك هو القليل الرابع من Myarray [75] هو الصفر (0) أو واحد (1).

byte[] MyArray; //with 200 elements

//check the fourth BIT of  MyArray[75]
هل كانت مفيدة؟

المحلول

القليل الرابع في العنصر 75؟

if((MyArray[75] & 8) > 0) // bit is on
else // bit is off

يتيح لك المشغل استخدام قيمة كقنعة.

xxxxxxxx = ?
00001000 = 8 &
----------------
0000?000 = 0 | 8

يمكنك استخدام هذه الطريقة لجمع أي من قيم البت باستخدام نفس التقنية.

1   = 00000001
2   = 00000010
4   = 00000100
8   = 00001000
16  = 00010000
32  = 00100000
64  = 01000000
128 = 10000000

نصائح أخرى

شيء مثل:

if ( (MyArray[75] & (1 << 3)) != 0)
{
   // it was a 1
}

على افتراض أنك تعني 4 بت من اليمين.

وقد ترغب في التحقق System.Collections.BitArray, ، فقط للتأكد من أنك لا تعيد اختراع العجلة.

    private bool BitCheck(byte b, int pos)
    {
        return (b & (1 << (pos-1))) > 0;
    }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top