드릴 작업 시작 설명서
이 문서에서 다룰 내용은 다음과 같습니다.
1. Overview of Decimal and Binary Number System
a. Conversion of Decimal number system -> Binary Number System
Conversion of Binary number system -> Decimal Number System
b. Addition and Subtraction of Binary numbers:
2. Bitwise operators
3. Significance of these operations
a. General Application
b. Swapping
c. Even and Odd
1. 십진법과 이진법의 개술
숫자를 쓰는 가장 흔히 볼 수 있는 관례는 10진법이다.이 시스템에서 우리가 쓴 숫자는 10의 멱이다.예를 들어,
(375)10=3x102+7x101+5x100
이와 유사하게 컴퓨터는 이진수를 처리하는 데 습관이 되어 기수 2에 대응한다.
(101)2=1x22+0x21+1x20=5
a, 십진수 변환 - > 이진수 변환, 반대로도 마찬가지
i, 십진수 시스템 -> 이진수 시스템
우리가 10진법에서 2진법으로 바뀔 때, 우리는 나눗셈으로 10진법을 2진법으로 바꾼다.
(10)10 -> (?)2
비결은 숫자를 끊임없이 2로 나누고 나머지를 옆에 쓰는 것이다.
둘2진수 시스템 -> 10진수 시스템
위의 그림에서 보듯이, 우리는 곱셈을 사용하여 2진법을 10진법으로 변환한다.
(1010)2=1x23+0x22+1x21+20
= 8 + 0 + 2 + 0
= 10
b。이진수 가감:
보너스
이것은 2진 숫자 덧셈의 진가표다.
첫째
2일
총수
지니다
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
하면, 만약, 만약...
(5)10 = (101)2
(6)10 = (110)2
진가표에 2진법 표시를 추가하면
강조 표시된 1은 오프셋을 나타냅니다.1011을 10진법으로 바꾸면 우리가 얻은 결과는 11이고 실제로는 5+6이다.
둘뺄셈
스포일러 경보: 컴퓨터에는 뺄셈이 없다.컴퓨터는 2라고 불리는 부호화 방법을 사용하여 덧셈과 뺄셈을 집행한다.따라서 6-5를 실행하려면 컴퓨터가 6+(-5)로 간주한다.
첫 번째 단계: 십진수를 이진수로 변환한다.
(6)10 = (110)2
(5)10 = (101)2
2단계: 뺄 숫자의 위치를 반전한다.(0을 1로, 1을 0으로 변경)
(5)10 = (101)2 = 010
3단계: 숫자 추가
4단계: 바이너리 답안을 10진법으로 전환한다.
(1)2 = (1)10
그래서 우리가 얻은 답은 1이다.
2. 비트 연산자
우리는 십진수를 처리하는 산술 연산자가 있기 때문에, 이진수를 처리하는 비트 연산자가 있다.가장 일반적인 비트 연산자는 다음과 같습니다.
2일
및 (&)
또는 (|)
혹은
0
0
0
0
0
0
1
0
1
1
1
0
0
1
1
1
1
1
1
0
이것을 주 표로 간주하다.어떻게 이 표를 세웁니까?
1.와(&): 숫자의 두 자리가 모두 1이면 출력은 1이고 그렇지 않으면 0이다.
2. 또는(|): 숫자의 두 자리가 모두 0이면 0으로 출력하고 그렇지 않으면 1로 출력합니다.
3. XOR (^): 숫자의 두 자리가 다르면 1 또는 0으로 출력합니다.
다른 조작부호를 탐색해 봅시다.
4.(~) 한 자리에서 일할 수 없습니다.그것은 비트의 값을 반전시킨다.0으로 입력하면 1로 변환하고 그 반대의 경우도 마찬가지입니다.
5. 오른쪽으로 (>>): 위치의 위치를 오른쪽으로 이동합니다.오른쪽 자리의 의미는 숫자를 2로 나누는 데 있다.예를 들어, 우리가 숫자를 12번 오른쪽으로 두 번 옮겨야 한다고 가정하자.
질문: 12>>2
솔루션: 12 바이너리에서 1100
오른쪽 이동 1회:0110
오른쪽 이동 두 번:0011
따라서 12는 6으로 전환되고 그 다음은 3이다.
6. 왼쪽으로 이동(<<): 한 위치의 위치를 왼쪽으로 이동합니다.왼쪽 자리의 의미는 숫자를 2로 곱하는 데 있다.예를 들어, 만약 우리가 숫자를 12번 왼쪽으로 두 번 옮겨야 한다고 가정한다면.
질문: 12<2
솔루션: 12 바이너리에서 1100
오른쪽 이동 1회: 11000
오른쪽 이동 2회: 110000
따라서 12는 24로 전환되고 48이 된다.
3. 이런 행동의 의미
a. 일반 응용 프로그램
만약 당신이 코드를 쓰고 싶다면, 이 코드에서, 당신은 끊임없이 이 항목을 곱하기/나누기 2로 한다.
for (int i = 1; i <= N; i = i * 2)
{
------------------
------------------
}
업데이트 단계에서 곱셈이 아닌 왼쪽 이동 연산자를 직접 사용할 수 있습니다.for(int i =1; i< = N; i =(i<<1))
{
------------------
------------------
}
b. 교환
세 번째 변수 없이 스왑을 수행할 수 있습니다.마술은 XOR 연산자에 의해 생성됩니다.
int a = 5, b = 2;
a ^= b;
b ^= a;
a ^= b;
c, 짝수/홀수
만약 내가 너에게 말한다면, 우리는 짝수인지 홀수인지 전혀 모(%) 연산을 하지 않고 판단할 수 있다.우리는 위치 차단을 사용하여 이 점을 실현할 수 있다.비트 엄폐에 들어가기 전에 나는 작은 테스트를 하고 싶다.이 숫자들의 패턴은 무엇입니까?
2 = 10
4 = 100
6 = 110
8 = 1000
10= 1010
1 = 1
3 = 11
5 = 101
7 = 111
9 = 1001
만약 네가 정확하게 주의한다면, 너는 모든 짝수의 마지막 자리가 0이라는 것을 발견할 수 있을 것이다.마찬가지로 홀수에 대해 마지막 숫자는 1이다.따라서 짝수와 홀수를 구분하기 위해서는 한 숫자의 마지막 자리가 0/1인지 확인하기만 하면 된다.
이 개념은 우리가 어떤 숫자와 1을 더하면 숫자의 마지막 자리를 받는다는 것이다.
예를 들어,
i, 8번, 1번.
둘7 & 1
우리는 결과를 0과 간단하게 비교하고 우리의 숫자가 짝수인지 홀수인지 검증할 수 있다.이 과정을 비트 차단이라고 한다.우리는 1을 마스크로 사용하고 필요한 출력을 얻기 위해 조작을 실행합니다.
비트 조작 기술을 사용한 짝수 코드 세그먼트:
int i = 8763;
if((i&1)==0)
System.out.println("Even Number");
else
System.out.println("Odd Number");
오늘은 여기까지입니다, 여러분.본 시리즈의 다음 부분에서 우리는 위치 엄폐 기술을 토론하고 선진적인 위치 조작 기술과 알고리즘을 계속 탐색할 것이다.본문의 영감은
통찰력이 풍부한 프로그래머의 추가 견해:
Reference
이 문제에 관하여(드릴 작업 시작 설명서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theinsightfulcoder/a-beginners-guide-to-bit-manipulation-35ek텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)