C 언어
이 자습서에서는 C#의 비트 및 비트 시프트 연산자에 대해 자세히 알아봅니다. C#은 4비트 및 2비트 시프트 연산자를 제공합니다.
비트 및 비트 시프트 연산자는 정수(int, long 등) 및 부울 데이터에 대한 비트 수준 연산을 수행하는 데 사용됩니다. 이러한 연산자는 실제 상황에서 일반적으로 사용되지 않습니다.
더 자세히 알아보려면 비트 연산의 실제 응용 프로그램을 방문하십시오.
C#에서 사용할 수 있는 비트 및 비트 시프트 연산자는 다음과 같습니다.
연산자 | 운영자 이름 |
---|---|
~ | 비트별 보수 |
& | 비트 AND |
| | 비트 OR |
^ | 비트별 배타적 OR(XOR) |
<< | 비트 왼쪽 시프트 |
>> | 비트 오른쪽 시프트 |
비트 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)
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 연산을 수행합니다. 비트 중 하나가 0
인 경우 , 결과는 0
입니다. . 그렇지 않으면 결과는 1
입니다. .
피연산자가 bool
유형인 경우 , 비트 AND 연산은 이들 간의 논리적 AND 연산과 동일합니다.
예를 들어,
14 = 00001110 (In Binary) 11 = 00001011 (In Binary)
14와 11 사이의 비트 AND 연산:
00001110 00001011 -------- 00001010 = 10 (In Decimal)
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 연산을 수행합니다. 해당 비트가 동일인 경우 , 결과는 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
를 방문하세요.
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)
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의 보수 |
---|---|---|
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)
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)
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 언어
액체, 반고체 물질, 증기 또는 공기가 배관을 따라 이동하여 응용 분야에 사용되는 경우 물질의 흐름을 조절해야 합니다. 너무 많은 재료는 응용 프로그램에 필요하지 않거나 시스템을 손상시키거나 작업자에게 위험할 수 있습니다. 또한 작업자는 장비의 유지 보수를 수행하거나 프로세스에 문제가 있는 경우 작업을 중단하는 등 특정 이유로 자재의 흐름을 완전히 차단할 수 있는 방법이 있어야 합니다. 밸브라는 메커니즘이 재료의 흐름을 조절하는 데 사용됩니다. 밸브는 규제하는 재료와 사용되는 시스템에 따라 다양한 유형으로 제공됩니다. 공압 밸브는
드릴링은 구멍을 생성하는 과정이고 탭핑은 구멍 내부에 나사산을 절단하는 기술이므로 나사 구멍이 있는 CNC 부품을 제작할 때 드릴 비트와 탭핑 도구를 순차적으로 사용하는 경우가 많습니다. 드릴 비트 크기 및 탭 크기 선택과 관련하여 표준 드릴 및 탭 크기 차트가 있습니다. 참고로. 드릴 및 탭 크기 차트란 무엇이며 왜 사용해야 합니까? 맞춤형 CNC 가공 부품 제작 시 , 나사산이 있는 구멍은 완성된 부품을 고정하거나 건물을 용이하게 하기 위해 종종 필요합니다. 나사 구멍을 만드는 가장 일반적인 방법 중 하나는