산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C# 비트 및 비트 시프트 연산자

C# 비트 및 비트 시프트 연산자

이 자습서에서는 C#의 비트 및 비트 시프트 연산자에 대해 자세히 알아봅니다. C#은 4비트 및 2비트 시프트 연산자를 제공합니다.

비트 및 비트 시프트 연산자는 정수(int, long 등) 및 부울 데이터에 대한 비트 수준 연산을 수행하는 데 사용됩니다. 이러한 연산자는 실제 상황에서 일반적으로 사용되지 않습니다.

더 자세히 알아보려면 비트 연산의 실제 응용 프로그램을 방문하십시오.

C#에서 사용할 수 있는 비트 및 비트 시프트 연산자는 다음과 같습니다.

C# 비트 연산자 목록
연산자 운영자 이름
~ 비트별 보수
& 비트 AND
| 비트 OR
^ 비트별 배타적 OR(XOR)
<< 비트 왼쪽 시프트
>> 비트 오른쪽 시프트
<시간>

비트 OR

비트 OR 연산자는 |로 표시됩니다. . 두 피연산자의 해당 비트에 대해 비트 OR 연산을 수행합니다. 비트 중 하나가 1인 경우 , 결과는 1입니다. . 그렇지 않으면 결과는 0입니다. .

피연산자가 bool 유형인 경우 , 비트 OR 연산은 그들 사이의 논리적 OR 연산과 동일합니다.

예를 들어,

14 = 00001110 (In Binary)
11 = 00001011 (In Binary)

비트 단위 OR 14~11시 운영:

00001110
00001011
--------
00001111 = 15 (In Decimal)

예시 1:비트 OR

using System;
 
namespace Operator
{
	class BitWiseOR
	{
		public static void Main(string[] args)
		{
			int firstNumber = 14, secondNumber = 11, result;
			result = firstNumber | secondNumber;
			Console.WriteLine("{0} | {1} = {2}", firstNumber, secondNumber, result);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

14 | 11 = 15
<시간>

비트 AND

비트 AND 연산자는 &으로 표시됩니다. . 두 피연산자의 해당 비트에 대해 비트 AND 연산을 수행합니다. 비트 중 하나가 0인 경우 , 결과는 0입니다. . 그렇지 않으면 결과는 1입니다. .

피연산자가 bool 유형인 경우 , 비트 AND 연산은 이들 간의 논리적 AND 연산과 동일합니다.

예를 들어,

14 = 00001110 (In Binary)
11 = 00001011 (In Binary)

14와 11 사이의 비트 AND 연산:

00001110
00001011
--------
00001010 = 10 (In Decimal)

예시 2:비트 AND

using System;
 
namespace Operator
{
	class BitWiseAND
	{
		public static void Main(string[] args)
		{
			int firstNumber = 14, secondNumber = 11, result;
			result = firstNumber & secondNumber;
			Console.WriteLine("{0} & {1} = {2}", firstNumber, secondNumber, result);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

14 & 11 = 10
<시간>

비트 XOR

비트 XOR 연산자는 ^으로 표시됩니다. . 두 피연산자의 해당 비트에 대해 비트 XOR 연산을 수행합니다. 해당 비트가 동일인 경우 , 결과는 0입니다. . 해당 비트가 다르면 , 결과는 1입니다. .

피연산자가 bool 유형인 경우 , 비트 XOR 연산은 그들 사이의 논리적 XOR 연산과 동일합니다.

예를 들어,

14 = 00001110 (In Binary)
11 = 00001011 (In Binary)

14와 11 사이의 비트 XOR 연산:

00001110
00001011
--------
00000101 = 5 (In Decimal)

Bitwise XOR 사용법에 대해 더 알고 싶다면 Magic of XOR

를 방문하세요.

예시 3:비트 XOR

using System;
 
namespace Operator
{
	class BitWiseXOR
	{
		public static void Main(string[] args)
		{
			int firstNumber = 14, secondNumber = 11, result;
			result = firstNumber^secondNumber;
			Console.WriteLine("{0} ^ {1} = {2}", firstNumber, secondNumber, result);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

14 ^ 11 = 5
<시간>

비트별 보수

Bitwise Complement 연산자는 ~으로 표시됩니다. . 단항 연산자, 즉 하나의 피연산자에서만 작동합니다. ~ 연산자 반전 각 비트, 즉 1에서 0으로, 0에서 1로 변경됩니다.

예를 들어,

26 = 00011010 (In Binary)

26에 대한 비트별 보수 연산:

~ 00011010 = 11100101 = 229 (In Decimal)

예제 4:비트별 보수

using System;
 
namespace Operator
{
	class BitWiseComplement
	{
		public static void Main(string[] args)
		{
			int number = 26, result;
			result = ~number;
			Console.WriteLine("~{0} = {1}", number, result);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

~26 = -27

우리는 -27를 얻었습니다. 229을 예상했을 때의 출력으로 . 왜 이런 일이 일어났습니까?

이진 값 11100101 때문에 발생합니다. 229로 예상됩니다. 실제로 -27의 2의 보수 표현입니다. . 컴퓨터에서 음수는 2의 보수로 표현됩니다.

임의의 정수 n에 대해 n의 2의 보수 -(n+1)가 됩니다. .

2의 보수
십진수 바이너리 2의 보수
0 00000000 -(11111111 + 1) =-00000000 =-0(십진수)
1 00000001 -(11111110 + 1) =-11111111 =-256(십진수)
229 11100101 -(00011010 + 1) =-00011011 =-27

오버플로 값은 2의 보수에서 무시됩니다.

26의 비트 보수 229(십진수)이고 229의 2의 보수입니다. -27입니다. . 따라서 출력은 -27입니다. 229 대신 .

<시간>

비트 왼쪽 시프트

비트 왼쪽 시프트 연산자는 <<로 표시됩니다. . << 연산자는 숫자를 지정된 비트 수만큼 왼쪽으로 이동합니다. 최하위 비트에 0이 추가됩니다.

십진수로

와 동일합니다.
num * 2bits

예를 들어,

42 = 101010 (In Binary)

42에 대한 비트 단위 리프트 시프트 작업:

42 << 1 = 84 (In binary 1010100)
42 << 2 = 168 (In binary 10101000)
42 << 4 = 672 (In binary 1010100000)

예시 5:비트 단위 왼쪽 시프트

using System;
 
namespace Operator
{
	class LeftShift
	{
		public static void Main(string[] args)
		{
			int number = 42;

			Console.WriteLine("{0}<<1 = {1}", number, number<<1);
			Console.WriteLine("{0}<<2 = {1}", number, number<<2);
			Console.WriteLine("{0}<<4 = {1}", number, number<<4);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

42<<1 = 84
42<<2 = 168
42<<4 = 672
<시간>

비트 오른쪽 시프트

비트 왼쪽 시프트 연산자는 >>로 표시됩니다. . >> 연산자는 지정된 비트 수만큼 숫자를 오른쪽으로 이동합니다. 첫 번째 피연산자는 두 번째 피연산자가 지정한 비트 수만큼 오른쪽으로 이동합니다.

십진수로

와 동일합니다.
floor(num / 2bits)

예를 들어,

42 = 101010 (In Binary)

42에 대한 비트 단위 리프트 시프트 작업:

42 >> 1 = 21 (In binary 010101)
42 >> 2 = 10 (In binary 001010)
42 >> 4 = 2 (In binary 000010)

예 6:비트 오른쪽 시프트

using System;
 
namespace Operator
{
	class LeftShift
	{
		public static void Main(string[] args)
		{
			int number = 42;

			Console.WriteLine("{0}>>1 = {1}", number, number>>1);
			Console.WriteLine("{0}>>2 = {1}", number, number>>2);
			Console.WriteLine("{0}>>4 = {1}", number, number>>4);
		}
	}
}

프로그램을 실행하면 다음과 같이 출력됩니다.

42>>1 = 21
42>>2 = 10
42>>4 = 2

C 언어

  1. C# 키워드 및 식별자
  2. C# 연산자
  3. C# 비트 및 비트 시프트 연산자
  4. C++ 연산자
  5. C 프로그래밍 연산자
  6. 파이썬 연산자
  7. 자바 연산자
  8. IoT 및 블록체인 – 패러다임 전환
  9. 예제가 있는 C++의 연산자:정의, 유형 및 프로그램
  10. C의 비트 연산자:AND, OR, XOR, 시프트 및 보수