KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I am trying to figure out how exactly arithmetic bit-shift operators work in C, and how it will affect signed 32-bit integers. To make things simple, let's say we work within one byte (8 bits): x = 1101.0101 MSB[ 1101.0101 ]LSB Reading other posts on Stack Overflow and some websites, I found that: << will shift toward MSB (to the left, in my case), and fill "empty" LSB bits with 0s. And >> will shift toward LSB (to the right, in my case) and fill "empty" bits with MS bit So, x = x << 7 will result in moving LSB to MSB, and setting everything to 0s. 1000.0000 Now, let's say I would >> 7 , last result. This would result in [0000.0010] ? Am I right? Am I right about my assumptions about shift operators? I just tested on my machine, ** int x = 1; //000000000......01 x = x << 31; //100000000......00 x = x >> 31; //111111111......11 (Everything is filled with 1s !!!!!) Why?
Tags (comma-separated)
Save Edits
Cancel