C语言 函数返回 值value的二进制位模式从左到右翻转后的值。

unsigned int reverse_bit(unsigned int value)

这个函数的返回把value的二进制位模式从左到右翻转后的值。

如在32位机器上25这个值包含下列各位:

00000000000000000000000000011001

翻转后:(2550136832)

10011000000000000000000000000000

注意:由于是在32位机器上,,再将二进制数翻转后需要考虑剩下的0的个数,还要考虑到int的范围;

#include <stdio.h>#include <math.h>unsigned int reverse_bit(unsigned int value){int i=31;int m;int sum=0;while(value != 0){m = value & 1;//取余value = value >> 1; //除2sum =sum + m * pow(2,i); //pow(2,1)表示2的i次方i–;}return sum;}int main(){unsigned long int a;a=reverse_bit(25);printf("%u",a);//长整形return 0;}

如果没有考虑到int 的范围结果会是这样的结果

int main(){unsigned int a;a=reverse_bit(25);printf("%d",a);return 0;}

对人性的弱点有清醒的认识,

C语言 函数返回 值value的二进制位模式从左到右翻转后的值。

相关文章:

你感兴趣的文章:

标签云: