/// <summary> /// Returns true if all of bits in range are set. /// </summary> /// <param name="pos">Position in bitfield (must be 0-63).</param> /// <param name="numBits">Number of bits to set (must be 1-64).</param> /// <returns>Returns true if all bits are set.</returns> public bool TestAll(int pos, int numBits = 1) { CheckArgs(pos, numBits); var mask = 0xfffffffffffffffful >> (64 - numBits); return(mask == Bitwise.ExtractBits(Value, pos, mask)); }
/// <summary> /// Returns all bits in range as uint. /// </summary> /// <param name="pos">Position in bitfield (must be 0-63).</param> /// <param name="numBits">Number of bits to set (must be 1-64).</param> /// <returns>Returns requested range of bits.</returns> public ulong GetBits(int pos, int numBits = 1) { CheckArgs(pos, numBits); var mask = 0xfffffffffffffffful >> (64 - numBits); return(Bitwise.ExtractBits(Value, pos, mask)); }
/// <summary> /// Set bits to desired boolean value. /// </summary> /// <param name="pos">Position in bitfield (must be 0-63).</param> /// <param name="value">Value of bits to set.</param> /// <param name="numBits">Number of bits to set (must be 1-64).</param> public void SetBits(int pos, bool value, int numBits = 1) { CheckArgs(pos, numBits); var mask = 0xfffffffffffffffful >> (64 - numBits); Value = Bitwise.SetBits(Value, pos, mask, value); }
/// <summary> /// Set single bit to desired boolean value. /// </summary> /// <param name="pos">Position in bitfield (must be 0-31).</param> /// <param name="value">Value of bits to set.</param> public void SetBits(int pos, bool value) { CheckArgs(pos, 1); Value = Bitwise.SetBits(Value, pos, 1, value); }
/// <summary> /// Calculate number of trailing zeros. /// </summary> /// <returns>Number of trailing zeros</returns> public int CountTrailingZeros() { return(Bitwise.CountTrailingZeros(Value)); }
/// <summary> /// Calculate number of leading zeros. /// </summary> /// <returns>Number of leading zeros</returns> public int CountLeadingZeros() { return(Bitwise.CountLeadingZeros(Value)); }
/// <summary> /// Calculate number of set bits. /// </summary> /// <returns>Number of set bits.</returns> public int CountBits() { return(Bitwise.CountBits(Value)); }