[fpc-devel] bitwise shift oddity a << b

Adriaan van Os fpc at microbizz.nl
Tue May 19 16:36:01 CEST 2015


Jonas Maebe wrote:

> No, it does not. It only depends on the type. Shifting an uint32_t with 
> value 1 right by 32 bits is undefined. Shifting an uint64_t with value 1 
> right by 32 bits is 0.

As I said, this is absurd, as so many other de-facto bad habits in computing. There should be no 
difference between shifting a value (of any type) right by N bits or shifting the same value (of 
the same type) N-times right by 1 bit. That is not a matter of type but of simple logic.

But, of course, I understand that CPUs implement it wrong and that the compilers writers want to be 
compatible with the CPU doing it wrong. That is probably the most practical solution. But that 
doesn't make it less ludicrous.

Regards,

Adriaan van Os




More information about the fpc-devel mailing list