SystemVerilog

shift 연산자 (>>>, <<<, <<, >>)

epro-asic 2023. 8. 8. 22:35

verilog에서 사용하는 shift 연산자는 크게 >>, << 와 같은 논리 shift 연산자와

 

>>>, <<< 같은 산술 shift 연산자가 있습니다

 

두개가 어떻게 다른지는 아래의 예를 기준으로 설명 합니다

 

a = 5'b10100;
b = a <<< 2; //b == 5'b10000
c = a >>> 2; //c == 5'b11101
d = a << 2;  //d == 5'b10000
e = a >> 2;  //e == 5'b00101

stackoverflow에서 가저온 예시인데

 

간단히 말해서 >>>, <<<는 shift를 할 때 부호를 고려하면서 shift를 한다고 생각하면 되고(<<<는 그냥 0 붙이면서 부호도 밀어버림)

 

<<, >>은 그냥 0을 채우면서 shift한다고 생각을 하면 됩니다.