问题
在py编程中,碰到一个小问题,如何把一个浮点数按位反转,这个问题说大不大,说小不小,一开始觉得很容易,后来仔细考虑了一下,没有想像的那么简单。
思路
按照一般的python解决思路,肯定是寻找相对应的python库,但是很遗憾,对浮点数位操作的库目前还没有。
那么接下来是就是按照‘手算’的思路来解决,大致分为如下:
将浮点数按照754标准转化为32位或者64位二进制字符串。
对该字符串的指定位置进行翻转(0->1或者1->0),得到新的字符串。
对新的字符串进行转码,按照754标准转化为浮点数。
以上思路包含两个主要的函数,对浮点数的编码和解码,问题是可以直接结局的,但是显然是过于麻烦的,有没有更简单的思路?
显然是有的,我们想起来在c语言中是可以直接操作内存的,这就会使得问题简单很多,对于c语言,可以通过如下方式:
float trans(float w)
{
srand((unsigned)time(NULL));
unsigned char *p;
char b=0x1;
int k = rand()%10, d = rand()%6,i;
for (i=0; i
k = rand()%10
p=(unsigned char *)&w;
*(p+k/8)=*(p+k/8)^(b<
}
r