有时你想控制某一位
假设你需要一个结构,其中有很多表示“是”或“非”的值,可以用一些short
或int
来创建结构:
这样做完全可行,但问题是,真/假的值只需要一位就能表示,short
字段占了多得多的空间,太浪费了,要是结构的字段的值能只用一位表示就好了。
这就是发明位字段(bitfield
)的原因。
二进制位百宝箱
处理二进制值时,要是能够以某种方法在字面值中指定0和1就好了,比如:
- int x = 01010100;
可惜的是,C语言不支持二进制字面值,不过它支持十六进制字面值。每当C语言看到0x开头的数字,就认为它是以16为基数的数字:
如何在十六进制与二进制之间进行转换?这比二进制与十进制之间的转换要容易些吗?是的,可以把十六进制数逐位转换为二进制数:
每一个十六进制数对应一个长度为4的二进制数。只要知道数字0到15的二进制形式,就能很快地在心中完成转换。