我有以下代码:
void MyBitMaker(int inputNumber)
{
Console.WriteLine(inputNumber << 1);
//TODO
//Bit bitHolder = inputNumber << 1;
//InitMico(ref bitHolder);
}
C#
中没有用于存储位的类型。有没有办法在变量中存储位。
我使用C#
编写一个微控制器,它使用来自Web服务的位,获取它们并将它们发送到控制器以使用接口来打开,关闭,休眠和更改输入数据适当的位。我的问题是micro在ram中只有16个字节的内存而且我不能存储超过两个字节,micro应该存储以前操作的历史(这是额外的,也许是行话)。我的空间很小,需要这个小单元。我搜索了很多,没有找到任何东西。目前我正在使用我自己已经实现的类的位运算符但由于使用位操作它根本没有效率。我想知道是否有人面对可以帮助我的事情。
答案 0 :(得分:2)
最小的可寻址单位是byte
,所以使用它,或者bool
仍然是8位,但只能设置两个可能的值。
你不能引用一点,所以无论如何都是无用的。如果您需要解决byte
中的特定位置,您可以传递该位置。但是,您只能通过设置整个字节来更改位的值。
答案 1 :(得分:1)
我只想存储位
琐碎的解决方案:bool阵列。
如果确实需要以压缩形式存储这些位,则可以使用BitArray
类型,该类型在内部使用int数组。您可以将其索引与普通数组类似:
var myBits = new BitArray(20); // initialize for 20 bits (1 int will be stored internally)
myBits[5] = true; // similar to this: myInt |= 1 << 5;