If we use paper-pencil, we can get 499.758. The OP is asking to find (499 and not 491 or 499.758) using computer and the associated programming language (the Arduino Platform).
We have these programming constructs -
unsigned int data type,
float data type,
By hand calculation, we get 0.978 (against 1000/1023) which when multiplied by 511, the result is 499.758. As the OP does not want the fractional part of the result, the net result is: 499.
Now, I would like inquire of OP -- what programming language construct (function, method, data type, and etc.) we have that we can use to get 0.978 from 1000/1023. I see (for myself) that I have no other alternative except using the following codes:
float x = (1000/1023.0); //I have write 1023.0 and not 1023 in respect of float data type
Serial.println(x, 3); //shows: 0.978
Now, getting the net result: 499
float x4 = x*511;
Serial.println((int)x4); //shows: 499