2010-05-14 108 views
0
<?php 

echo (2884284 >> 16), '<br>'; // = 44 

echo ((2884284 >> 16) & 0xFFFF), '<br>'; // 44 

從上述我得到44如何扭轉此操作?

那麼,如何可以從44到retrive ??? 2884284

回答

9

你不能。你正在通過這種轉變銷燬數據。

+0

並通過使用掩模 – tbischel 2010-05-14 21:09:06

3

要擴大mhughes回答:

2884284二進制是:

1011000000001010111100 

當你向右移動,位在右邊被切斷,並在左邊位填充0所以2884284 >> 16變爲:

0000000000000000101100 

...你提到這,就是44注意這是相同的,通過2^16分和向下取整。反向操作是<<,或左移位。它切斷左邊的位並用零填充右邊的位。但是44 << 16是:

1011000000000000000000 

...也就是說,你從截位丟失的數據。這個數字是2883584,可能已經足夠接近了。請注意,這與乘以2^16相同。