Quantcast
Channel: Unsigned 32-bit integer to binary string function - Code Review Stack Exchange
Viewing all articles
Browse latest Browse all 5

Unsigned 32-bit integer to binary string function

$
0
0

I've been trying to solidify my understanding of the binary number system by writing code. So, I tried to write a function with what I currently understand about the binary system that returns a string representation of the binary number representing the input.

Any feedback regarding how I may optimize the program is greatly appreciated. Thanks!

char *uint32_to_binarystr(uint32_t n) {    if (n != UINT32_MAX) {        int expb2 = 0;              // Exponent of 2.              static char binarystr[33];  // 32 bits + 1 termination NULL char.        binarystr[32] = '\0';       // Add terminating NULL char.        memset(binarystr, '0', 32); // Initialize 32-bit string as 0.        while (n != 0) {                         // Continue until n has been completely represented by a sum of powers of 2.            while (1 << expb2 <= n) { expb2++; } // Find the power of 2 that yields a result greater than n.             expb2 -= 1;                          // Once this number is found, we are sure that the previous power yields the largest power of 2 less than n.            n -= 1 << expb2;                     // We've found a power of 2 to represent this "chunk" of n. Reduce n by the same amount.            binarystr[31 - expb2] = '1';         // Set the bit at the index with expb2 digits following it to 1.            expb2 = 0;                           // Reset exponent of 2 and repeat.        }        return binarystr;    } else {        /*        In the case that UINT32_MAX is to be represented, just return hard-coded string.         Why?         A 32-bit shift is not doable in some cases:        https://stackoverflow.com/questions/7401888/why-doesnt-left-bit-shift-for-32-bit-integers-work-as-expected-when-used        */        static char binarystr[33];          binarystr[32] = '\0';               memset(binarystr, '1', 32);         return binarystr;    }}

Viewing all articles
Browse latest Browse all 5

Latest Images

Trending Articles





Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>
<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596344.js" async> </script>