<PackageReference Include="BouncyCastle.Cryptography" Version="2.5.0" />

Integers

public static class Integers
using Org.BouncyCastle.Math.Raw; using System; using System.Buffers.Binary; using System.Numerics; namespace Org.BouncyCastle.Utilities { public static class Integers { public const int NumBits = 32; public const int NumBytes = 4; public static int HighestOneBit(int i) { return (int)HighestOneBit((uint)i); } [CLSCompliant(false)] public static uint HighestOneBit(uint i) { i |= i >> 1; i |= i >> 2; i |= i >> 4; i |= i >> 8; i |= i >> 16; return i - (i >> 1); } public static int LowestOneBit(int i) { return i & -i; } [CLSCompliant(false)] public static uint LowestOneBit(uint i) { return (uint)LowestOneBit((int)i); } public static int NumberOfLeadingZeros(int i) { return BitOperations.LeadingZeroCount((uint)i); } public static int NumberOfTrailingZeros(int i) { return BitOperations.TrailingZeroCount(i); } public static int PopCount(int i) { return PopCount((uint)i); } [CLSCompliant(false)] public static int PopCount(uint u) { return BitOperations.PopCount(u); } public static int Reverse(int i) { return (int)Reverse((uint)i); } [CLSCompliant(false)] public static uint Reverse(uint i) { i = Bits.BitPermuteStepSimple(i, 1431655765, 1); i = Bits.BitPermuteStepSimple(i, 858993459, 2); i = Bits.BitPermuteStepSimple(i, 252645135, 4); return ReverseBytes(i); } public static int ReverseBytes(int i) { return BinaryPrimitives.ReverseEndianness(i); } [CLSCompliant(false)] public static uint ReverseBytes(uint i) { return BinaryPrimitives.ReverseEndianness(i); } public static int RotateLeft(int i, int distance) { return (int)BitOperations.RotateLeft((uint)i, distance); } [CLSCompliant(false)] public static uint RotateLeft(uint i, int distance) { return BitOperations.RotateLeft(i, distance); } public static int RotateRight(int i, int distance) { return (int)BitOperations.RotateRight((uint)i, distance); } [CLSCompliant(false)] public static uint RotateRight(uint i, int distance) { return BitOperations.RotateRight(i, distance); } } }