Trong C/C++, phép dịch bit sang phải đối với kiểu int sẽ là arithmetic shift (các bit xuất hiện mới bên trái sẽ giống với giá trị bit cao nhất trước đó).
Còn phép dịch bit sang phải với kiểu unsigned sẽ là logical shift (các bit mới xuất hiện bên trái sẽ là số 0).
Với a kiểu int và a = a >> 1 thì các bit 1 sẽ dịch sang phải 1 vị trí, ví trí bit cao nhất sẽ có giá trị của bit cao nhất trước đó, tức là 111… (giá trị a vẫn không đổi). Và theo luật biểu diễn số nguyên có dấu theo nguyên tắc số bù hai thì số gồm toàn bit 1 sẽ biểu diễn cho -1.