[C/C++] Remind! ‘>>’ extends sign bit

‘shift’ operator in C extends sign bit.

int a = 0xffffffff;
a = a>>8; // a == 0xffffffff

Due to sign of ‘a’ is minus, ‘>>8’ preserve it’s sign.
But, ‘unsigned’ value is always ‘>=0’ So, sign bit doesn’t need to be extended. So, front parts is filled with ‘0’.

unsigned int a = 0xffffffff
a = a >>8; // a == 0x00ffffff
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s