I am trying to convert a C programme to a scrip basic language.

The C programme is fairly simple but produces unexpected results - it is the unxpected result that I would like to emulate with script basic.

I am hoping someone can explain the mechanism that the C programme is using to come up with the unexpected result, then I will try and put that in practice in script basic using the available functions.

The C programme:

Code:
main()
{
	unsigned int crc;
		
	crc=-248625283;
	printf("crc before div by 256 %d\n", crc);
        printf("crc is a negative number to start with \n");	
	crc=crc/256;
	printf("crc after divide by 256 and assigned to an unsigned integer equals %d decimal \n", crc);
        
}
Normally if you divide -248625283 by 256 you would get a result of -971192 (integer)
Similarly if you divide 248625283 by 256 you would get a result of 971192.

The programme above gives a result of 15806023 . I expect this is related to assigning a negative number to a unsigned integer. What I need to know is how to get this result (15806023) using basic maths functions.

I hope someone can help explain the mechanism that gives 15806023 when dividing -248625283 by 256.