位变量访问float的二进制位(c51)
扫描二维码
随时随地手机看文章
;问题:C语言不允许使用位变量来访问浮点数据类型的二进制位,请看一下代码:
unionflm
{
floatmf;
longml;
};
bdatastructbady
{
charml;
unionflmex;
}try;
sbittryf31 = try.ex.ml ^ 31;
sbittrym10 = try.ml ^ 0;
sbittrym17 = try.ml ^ 7;
;处理方法:通过将浮点数和长整数构造一个联合(两者均为32位),后用位变量来访问联合中长整型的位,由于float和long在union中占用了相同的存储空间,也就访问了浮点数的对应位。