Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
720 views
in Technique[技术] by (71.8m points)

bit shift - Bits in C, how do I access the underlying bits in a C float?

Given a two floating point Numbers A and B, which are command line arguments, I must create methods to do bitwise operations on them. Including And, Or, Not, xOr, floating Point addition etc...

How can I access each bit in C? I need to access the specific 1's and 0's. Any idea how?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Here's an example using unions, as Keith suggests.


/* -std=c99 */
#include <stdio.h>

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;
  }
}

EDIT: changed signed ints to unsigned.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...