| hy's fightin''s profilehy'spacePhotosBlogLists | Help |
|
August 29 结构体中的冒号 今天看CRC的bit型算法学到了C++中的结构体定义可以使用":",具体说明如下:
在标准C语言中,下面的语句是合法的:
struct test{ 这样定义的 a 在赋值后只取最后的3bit,即转换为 -4 到 3 之间的数值。比如:
如果 a 为无符号型,则会转换为 0 到 7 之间。且同样适用于非 int 的其他类型(只是“:”后面的数和显示 a 的结果时一定要是整型)。
其中赋值'-5(dec)'=1101(原)=1011(补),所以在进行取后3位操作后变成'3(dec)',当然在CRC运算的结构体定义中,肯定是只用到了最后一位,具体定义如下:
typedef unsigned char bit;
typedef unsigned char byte; typedef unsigned short u16; typedef union { u16 val; struct { u16 bit0 : 1; u16 bit1 : 1; u16 bit2 : 1; u16 bit3 : 1; u16 bit4 : 1; u16 bit5 : 1; u16 bit6 : 1; u16 bit7 : 1; u16 bit8 : 1; u16 bit9 : 1; u16 bit10 : 1; u16 bit11 : 1; u16 bit12 : 1; u16 bit13 : 1; u16 bit14 : 1; u16 bit15 : 1; } bits; } CRCREGS; PS:以后我尽量把自己学习的心得体会写上来,免得以后忘了:)当然一些逻辑设计的电路图实在不好画的,我就写在NOTEBOOK上面了。。。
|
|
|