c++ 사용자 입장에선

1_u32 << 32를 하면 당연히 0이 될 거라고 생각했는데, 다시 한 바퀴 돌아서 1이 되네요?


https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=53db7bb6d055181dec09e4e726000242


std에 비트 rotate를 해주는 함수는 따로 rotate_left라고 있는데, shl랑 rotate_left랑 똑같이 동작하니까 당황스럽네요.

저는 오버플로우가 나면 0으로 만들고 싶어요. 그러니까 1_u32 << (32이상인 아무 정수) == 0가 되게 하려면 어떻게 해야 하나요?