[問題] 此位移的作用
我看到一份文獻上的寫法是
(原32位元我改16位元假設)
PP = 65535 /*2^16-1*/
define MUL5(x) (((x)>>11) + ((x)<<5&PP));
假設
一組數
x = 0000000101100011 = 876
如果我用MUL5(x)
那就是
0010110001100000 (x)<<5
+ 0000000000000000 (x)>>11
= 0010110001100000 = 11360
這樣..的意義是什麼呢? 16位元乘法?
=======================原始程式==================================
unsigned long MOPD(unsigned long z) {return (((z)&PP)+((z)>>31));}
#define PP 2147483647
#define KK 102
#define HH 1/(2.0*PP)
#define MUL20(x) (((x)>>11) + ((x)<<20&PP));
#define MUL9(x) (((x)>>22) + ((x)<< 9&PP));
double u_dx1d()
{
int II0 = II; unsigned long X;
if(++II >= KK) II = 0;
X = MODP(MUL20(XX[II]) + MUL9(XX[II]));
XX[II] = MOD(X + XX[II0]);
return ((double) XX[II] /PP) + HH;
}
其中,XX[i]是一個任意數值
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.128.31
推
05/26 10:29, , 1F
05/26 10:29, 1F
→
05/26 10:30, , 2F
05/26 10:30, 2F
→
05/26 10:47, , 3F
05/26 10:47, 3F
→
05/26 10:47, , 4F
05/26 10:47, 4F
推
05/26 11:45, , 5F
05/26 11:45, 5F
→
05/26 12:01, , 6F
05/26 12:01, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章