System.Windows.Forms.Util.NumberOfSetBits C# (CSharp) Method

NumberOfSetBits() public static method

public static NumberOfSetBits ( int i ) : int
i int
return int
		public static int NumberOfSetBits (int i)
		{
			i = i - ((i >> 1) & 0x55555555);
			i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
			return ((i + (i >> 4) & 0xF0F0F0F) * 0x1010101) >> 24;
		}

Usage Example

        public override void FlagsChanged(NSEvent theEvent)
        {
            var theKey = (NSEventModifierMask)Enum.ToObject(typeof(NSEventModifierMask), (uint)theEvent.ModifierFlags & 0xFFFF0000);

            int count = Util.NumberOfSetBits((int)theKey);

            //Console.WriteLine(count);
            if (theKey == 0 || lastKeyCount > count)
            {
                Host.onKeyUp(new KeyEventArgs(theEvent));
                //Console.WriteLine("keyUp");
            }
            else
            {
                Host.onKeyDown(new KeyEventArgs(theEvent));
                //Console.WriteLine("keyDown");
            }
            lastKeyCount = count;
            base.FlagsChanged(theEvent);
        }