C中的位,如何访问C float中的基础位?

给定两个浮点数A和B,它们是命令行参数,我必须创建方法来对它们进行逐位运算。 包括和,或者,不,xOr,浮点加法等……

如何访问C中的每个位? 我需要访问特定的1和0。 知道怎么样?

正如Keith所说,这是使用工会的一个例子。

/* -std=c99 */ #include  int main(int argc, char * argv[]) { /* note, I'm assuming an int has the same size of a float here */ assert( sizeof(unsigned int) == sizeof(float) ); union { float floating; unsigned int integer; } a; a.floating = 3.14; /* prints the bits in reverse order */ unsigned int temp = a.integer; for( int i = 0; i < sizeof(float)*8; i++ ) { printf("%d", temp & 0x1); temp = temp >> 1; } } 

编辑:将签名的int更改为unsigned。

通过使用工会….你可以按照以下方式到达每个部分: –

在C中使用位域的正确方法是什么?

或者简单地将整个事物联合到一个无符号长度然后操纵它。

您必须首先确定浮点数上的按位运算应该做什么,因为您不能对浮点数执行按位运算。

如果你将浮点数转换为无符号类型,或将符号,指数和尾数分成三个单独的无符号变量,那么比特移位的结果应该是什么?