logo

C의 시프트 연산자

이 섹션에서는 c 프로그래밍 언어의 비트 단위 시프트 연산자에 대해 설명합니다. 비트 시프트 연산자는 프로그램 요구 사항에 따라 이진 비트를 왼쪽 방향 또는 오른쪽 방향으로 이동하는 데 사용됩니다.

C의 시프트 연산자

시프트 연산자는 비트의 시프트 위치에 따라 두 가지 유형으로 분류됩니다.

  1. 왼쪽 시프트 연산자
  2. 오른쪽 시프트 연산자

왼쪽 시프트 연산자

왼쪽 시프트 연산자는 이진 비트에 대한 연산을 수행하는 비트 단위 시프트 연산자의 한 유형입니다. 비트의 위치를 ​​왼쪽으로 이동 또는 이동시키고, 비트를 이동한 후 오른쪽에 생성된 빈 공간에 0을 추가하려면 두 개의 피연산자가 필요한 이항 연산자입니다.

통사론

 var_name << no_of_position 

위 구문에서 var_name은 왼쪽 시프트(<<) operation is to be performed shift the binary bits at left side. and no_of_position variable represents number of placed or shifted in other words, operator shifts first operand on side by defined second operand.< p>

예를 들어, 정수 변수 num의 값은 22이고 이진 형식은 10110입니다. 이제 왼쪽 시프트 연산자를 사용하여 이진 비트 2를 이동합니다. num = num << 2는 num = num * (2와 같습니다. ^2). 그리고 num의 새 값은 22* (2 ^ 2) = 88이며 이는 이진 형식 1011000과 같습니다.

예제 1: C에서 왼쪽 Shift 연산자 사용을 보여 주는 프로그램

 #include int main () { // declare local variable int num; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); // use left shift operator to shift the bits num = (num &lt;&lt; 2); // It shifts two bits at the left side printf (&apos; 
 After shifting the binary bits to the left side. &apos;); printf (&apos; 
 The new value of the variable num = %d&apos;, num); return 0; } 

산출

 Enter a positive number: 25 After shifting the binary bits to the left side. The new value of the variable num = 100 

예제 2: C의 unsigned int 데이터에서 왼쪽 Shift 연산자를 사용하는 프로그램

 #include int main () { // declare local variable unsigned int num = 0xff; // use left shift operator to shift the bits num = (num &lt;&lt; 2); printf (&apos; 
 After shifting the binary bits to the left side. &apos;); printf (&apos; 
 The new value of the unsigned variable num = %d&apos;, num); return 0; } 

산출

 After shifting the binary bits to the left side. The new value of the unsigned variable num = 1020 

예제 3: 왼쪽 시프트 연산자를 수행하기 위해 사용자로부터 양수를 입력하는 프로그램

 #include int main () { // declare local variable int num, bit; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); printf (&apos; No. of binary bits shifted to the left side: &apos;); scanf (&apos; %d&apos;, &amp;bit); // use left shift operator to shift the bits num = (num &lt;&lt; bit); printf (&apos; 
 After shifting the bits to the left side. &apos;); printf (&apos; 
 The new value of the num = %d&apos;, num); return 0; } 

산출

 Enter a positive number: 40 No. of binary bits shifted to the left side: 4 After shifting the bits to the left side. The new value of the num = 640 

위의 예에서 사용자 정의 양수 40의 이진수 비트는 101000입니다. 그 후 이진수 비트를 왼쪽으로 이동하기 위해 숫자로 4를 사용합니다. 그런 다음 왼쪽 시프트 연산자는 왼쪽에서 4개의 이진 비트를 이동한 다음 오른쪽에 공간이 생성되고 오른쪽에 4개의 0이 채워지거나 추가되어 이진 값 1010000000을 반환합니다. 이는 다음과 같습니다. 십진수 640.

오른쪽 시프트 연산자

오른쪽 쉬프트 연산자는 오른쪽의 비트를 이동하는데 사용되는 비트 쉬프트 연산자의 일종으로 이중(>>) 화살표 기호로 표시된다. 왼쪽 시프트 연산자와 마찬가지로 오른쪽 시프트 연산자에도 오른쪽의 비트를 시프트한 다음 비트를 시프트한 후 왼쪽에 생성된 빈 공간에 0을 삽입하기 위해 두 개의 피연산자가 필요합니다.

통사론

 var_name &gt;&gt; no_of_position 

위 구문에서 var_name은 이진 비트를 오른쪽으로 이동하기 위해 오른쪽 시프트(>>) 연산을 수행할 정수 변수를 나타냅니다. 그리고 no_of_position 변수는 오른쪽으로 배치되거나 이동되는 비트 수를 나타냅니다. 즉, 오른쪽 시프트 연산자는 두 번째 피연산자에 대한 전체 비트 수를 정의하여 첫 번째 피연산자의 이진 비트를 오른쪽으로 이동시킵니다.

예제 1: C에서 오른쪽 Shift 연산자 사용을 보여 주는 프로그램

 #include int main () { // declare local variable int num; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); // use right shift operator to shift the bits num = (num &gt;&gt; 2); // It shifts two bits at the right side printf (&apos; 
 After shifting the binary bits to the right side. &apos;); printf (&apos; 
 The new value of the variable num = %d&apos;, num); return 0; } 

산출

팬더 반복
 Enter a positive number: 25 After shifting the binary bits to the right side. The new value of the variable num = 6 

예제 2: C의 unsigned int 데이터에서 오른쪽 Shift 연산자를 사용하는 프로그램

 #include int main () { // declare local variable unsigned int num = 0xff; // use right shift operator to shift the bits num = (num &gt;&gt; 2); printf (&apos; 
 After shifting the binary bits to the right side. &apos;); printf (&apos; 
 The new value of the unsigned variable num = %d&apos;, num); return 0; } 

산출

 After shifting the binary bits to the right side. The new value of the unsigned variable num = 63 

예제 3: 오른쪽 시프트 연산자를 수행하기 위해 사용자로부터 양수를 입력하는 프로그램

 #include int main () { // declare local variable int num, bit; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); printf (&apos; No. of binary bits shifted to the right side: &apos;); scanf (&apos; %d&apos;, &amp;bit); // use right shift operator to shift the bits num = (num &gt;&gt; bit); printf (&apos; 
 After using the right shift operator to shift the bits at the right side. &apos;); printf (&apos; 
 New value of the num = %d&apos;, num); return 0; } 

산출

 Enter a positive number: 40 No. of binary bits shifted to the right side: 4 After using the right shift operator to shift the bits to the right. The new value of the num = 2