드릴 작업 시작 설명서

비트 조작이나 비트 마술은 모두가 알고 있는 바와 같이 바이너리 데이터나 비트를 직접 처리하는 기술로 코드의 집행 속도를 가속화할 수 있다.만약 이 개념이 매우 무서워 보인다면 걱정하지 마라.우리는 예를 통해 모든 것을 이해할 것이다.
이 문서에서 다룰 내용은 다음과 같습니다.
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로 나누고 나머지를 옆에 쓰는 것이다.
  • 10/2, 나머지=0
  • 5/2, 나머지 = 1
  • 2/2, 나머지 =0
  • 너는 반드시 아래에서 위로 2진법을 써야 한다. 앞쪽은 1이다.따라서 10의 이진법은 1010의 형식을 나타낸다.
    둘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
    하면, 만약, 만약...
  • 0+0, 우리는 진입하지 않은 합을 0으로 얻었다.
  • 0+1, 구화는 1이고 진위가 없다.
  • 1+0, 구화는 1이고 진위가 없다.
  • 1+1, 구화는 0이고 진위는 1이다.
  • 가령 우리가 5+6의 형식으로 덧셈을 하려고 한다면컴퓨터는 10진법의 5와 6을 2진법으로 변환한다.
    (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단계: 숫자 추가
  • 진위가 가장 왼쪽의 최고 유효위(MSB)에서 생성된 경우 결과는 플러스임을 나타낸다.진위를 포기하고 1을 추가하여 최종 답안을 얻습니다.
  • 진위가 생성되지 않으면 음수입니다.이런 상황에서 너는 반드시 답안의 각 부분을 뒤집어야 한다.

  • 4단계: 바이너리 답안을 10진법으로 전환한다.
    (1)2 = (1)10
    그래서 우리가 얻은 답은 1이다.

    2. 비트 연산자



    우리는 십진수를 처리하는 산술 연산자가 있기 때문에, 이진수를 처리하는 비트 연산자가 있다.가장 일반적인 비트 연산자는 다음과 같습니다.
  • 비트 AND(&)
  • 비트 또는 (|)
  • 비트 이상 또는 (^)
  • 비트별 비(~)
  • 오른쪽으로 이동(>>)
  • 왼쪽으로 이동(<<)
  • 첫째
    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");
    
    오늘은 여기까지입니다, 여러분.본 시리즈의 다음 부분에서 우리는 위치 엄폐 기술을 토론하고 선진적인 위치 조작 기술과 알고리즘을 계속 탐색할 것이다.
    본문의 영감은

    통찰력이 풍부한 프로그래머의 추가 견해:

  • 창조적인 초급 파이톤 프로젝트 구축에 관심🐍?: 보기Python Projects for Beginners Series😍
  • 파이톤으로 자신의 인공지능 프로젝트를 구축하는 것에 관심이 있는지보기Python AI Series🧠
  • 저는 유용한 개발자 자원, 상호작용 테스트, 면접 기교 등을 제 페이지에 올리겠습니다.🖼
  • MyGithub Repository에서 나의 모든 프로젝트 소스 코드를 찾아서 다운로드🎁
  • 좋은 웹페이지 즐겨찾기