代码之家  ›  专栏  ›  技术社区  ›  RCIX

在C中操纵纽约球和更小的球#

  •  1
  • RCIX  · 技术社区  · 15 年前

    我有一个应用程序需要操作 nybbles 甚至可能是一次一个比特。C有没有图书馆可以帮助我?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Mehrdad Afshari    15 年前

    你可以使用 BitVector32 操作32位整数中的位,以及 BitArray 有一个代表一组布尔变量的位数组。

    此外,编写几个函数来操作单个位也很容易:

    public bool GetBitValue(int integer, int bit) {
        return (integer & (1 << bit)) != 0; 
    }
    
    public bool SetBitValue(ref int integer, int bit, bool value) {
        if (value)
            integer |= 1 << bit;
        else
            integer &= ~(1 << bit);
    }
    
        2
  •  2
  •   Spencer Ruport    15 年前

    图书馆真的不必要

    uint myVar = 257;
    const uint SOME_FLAG_A = 256 // 100000000
    const uint SOME_FLAG_B = 16  // 000010000
    const uint SOME_FLAG_C = 1   // 000000001
    
    if(myVar & SOME_FLAG_A == SOME_FLAG_A)
       Console.WriteLine("Bit A is set!");
    else
       Console.WriteLine("Bit A is not set.");
    
    if(myVar & SOME_FLAG_B == SOME_FLAG_B)
       Console.WriteLine("Bit B is set!");
    else
       Console.WriteLine("Bit B is not set.");
    
    myVar = myVar | SOME_FLAG_B;
    
    if(myVar & SOME_FLAG_B == SOME_FLAG_B)
       Console.WriteLine("Bit B is set!");
    else
       Console.WriteLine("Bit B is not set.");
    
    if(myVar & SOME_FLAG_C == SOME_FLAG_C)
       Console.WriteLine("Bit C is set!");
    else
       Console.WriteLine("Bit C is not set.");