I am reading Bitcoin wiki and it says
over the previous 2016 blocks. Can be further simplified to
D * 2**32 / 600
without much loss of accuracy.
I guess the reason of reducing to 2**32 is for computing convenience (bit operation). However, 0xffffff / 2016 = 32.507440476190474 and 0xffffff / 2048 = 31.99951171875 which is more accurate.
Why was 2016 chosen instead of 2048?