بسم الله الرحمن الرحيم
هل تريد أن تعرف عدد البتات التي قمتها 1 في المتحول الذي تستخدمه لربما تقوم لا يهمني الأمر ولكن هذا ما يستخدم في عملية التحقق من جميع البيانات التي يتم قرائتها من الذواكر عندما تضع خيار التحقق في البيوس أو ما يعمل في Protocol TCP في عملية التحقق من البينات المرسلة ليتم تخفيف حجم بينات التحقق
private int BitCount(int Val)
{
int Count = 0;
do
{
Val &= (Val - 1);
Count++;
} while (Val != 0);
return Count;
}نتائج الكود عندما نمرر للـ Method الرقم 32 سوف يعيد لنا واحد وإذا مررنا له الرقم 127 سوف يعطينا 7 وإذا مررنا الرقم 128 سوف يعيد لنا واحد وهكذا
أي عدد البتات التي تحوي الرقم واحد في مجمع البايتات
32 = 00000000000000000000000000100000 127 = 00000000000000000000000001111111 128 = 00000000000000000000000010000000