>  기사  >  백엔드 개발  >  PHP 기본 튜토리얼

PHP 기본 튜토리얼

巴扎黑
巴扎黑원래의
2016-11-22 14:45:431841검색

2진수, 8진수, 10진수, 16진수의 변환 1. 10진수와 2진수의 변환

(1) 10진수의 2진수 변환은 정수부와 소수부로 나누어진다

 ① 정수부

방법: 2로 나누고 나머지를 취하고, 역순으로 배열한다. 즉, 정수부분을 매번 2로 나누고, 나머지는 숫자에 있는 숫자이고, 몫은 계속해서 나누어진다. 2, 나머지는 위의 숫자입니다. 비트 가중치가 있는 숫자의 경우 몫이 0이 될 때까지 이 단계가 계속됩니다. 마지막 숫자를 읽을 때는 마지막 나머지부터 첫 번째 나머지까지 읽습니다. 다음 예:

예: 십진수 168을 이진수로 변환

결과는 십진수 168을 이진수로 변환한 결과(10101000)

첫 번째 단계는 168을 변환하는 것입니다. 2를 곱하면 몫은 84, 나머지는 0이 됩니다.

두 번째 단계는 몫 84를 2로 나누고, 몫 42의 나머지가 0이 되는 것입니다.

세 번째 단계는 몫 42를 2로 나누고, 몫 21의 나머지는 0이 되는 것입니다.

네 번째 단계는 몫 21을 2로 나누고, 몫 10의 나머지가 1이 되는 것입니다.

다섯 번째 단계는 몫 10을 2로 나누고, 몫 5의 나머지는 0이 되는 것입니다.

여섯 번째 단계는 몫 5를 2로 나누고, 몫 2의 나머지는 1이 되는 것입니다.

7단계: 몫 2를 2로 나누고, 몫 1의 나머지는 0입니다.

여덟 번째 단계는 몫 1을 2로 나누고, 몫 0의 나머지는 1이 되는 것입니다.

9단계 읽기, 마지막 자리는 2로 여러 번 나누어 얻은 것이므로 마지막 나머지부터 앞으로 나오는 숫자, 즉 10101000을 읽습니다.

(2) 소수부

방법: 2를 곱하고 반올림하여 순서대로 배열한다. 즉, 소수부에 2를 곱한 후 정수부를 취하고, 나머지 소수부에 2를 계속해서 곱하고, 그런 다음 정수 부분을 취하고 아래의 나머지 소수 부분에 소수 부분

이 0이 될 때까지 2를 곱합니다. 0이 될 수 없는 경우 소수점 자리를 반올림하는 것과 같습니다. 필요한 만큼 소수 자릿수를 유지하는 경우 다음 숫자가 0인지 1인지에 따라 숫자를 반올림합니다. 0이면 반올림합니다. 1이면 숫자 하나를 더합니다. 즉, 0은 1로 반올림됩니다. 판독값은 이전 정수에서 다음 정수로 읽어야 합니다. 예는 다음과 같습니다.

예 1: 0.125를 이진수로 변환

결과는 다음과 같습니다. 0.125를 이진수(0.001)로 변환합니다.

분석: 첫 번째 단계에서 0.125에 2를 곱하여 0.25를 얻으면 정수 부분은 0이고 소수 부분은 0.25입니다.

두 번째 단계에서는 소수 부분에 0.25를 곱합니다. 2를 곱하여 0.5를 얻으면 정수 부분은 0이고 소수 부분은 0.5입니다.

세 번째 단계는 소수 부분 0.5에 2를 곱하여 1.0을 얻은 다음 정수 부분은 1이고 소수 부분은 0.5입니다. 부분은 0.0입니다.

네 번째 단계는 첫 번째 숫자부터 시작하여 마지막 숫자인 0.001까지 읽는 것입니다.

예시 2, 0.45를 이진수로 변환(소수점 넷째 자리까지 유지)

위 단계에서 알 수 있듯이 다섯 번째 곱셈을 하면 결과는 0.4가 됩니다. 소수 부분은 계속해서 2를 곱하여 0.8을 얻고, 0.8은 다시 2를 곱하고, 1.6까지 곱셈은 계속됩니다. 결국, 소수 부분을 0으로 만드는 것은 불가능합니다. 10진수 반올림 방법을 배우려면 2진수만 있습니다. 0과 1이 두 개 있으므로 0은 1로 반올림됩니다. 이 역시 변환 중 컴퓨터 오류로 인해 발생하지만 예약된 숫자가 많고 정확도가 매우 높기 때문에 무시할 수 있습니다.
1) 십진수를 이진수로 변환하려면 정수와 십진수 두 부분으로 나누어 따로 변환해야 합니다

2) 정수를 변환할 때는 2로 나누는 나머지 방법을 사용합니다 , 그리고 소수를 변환할 때에는 2의 반올림 방식을 이용하세요

 3) 읽는 방향에 주의하세요

따라서 위의 방법을 통해 소수점 168.125가 변환된다는 것을 알 수 있습니다 이진수 10101000.001로 변환되거나 십진수는 대략 10101000.0111과 같은 이진수로 변환됩니다.

(3) 정수부와 소수부를 나누지 않고 이진수를 십진수로 변환

방법: 가중치에 의한 덧셈, 즉 이진수의 각 비트에 있는 숫자에 가중치를 곱한 후 합은 십진수입니다. 예시

이진수 101.101을 십진수로 변환합니다.

결과는 다음과 같습니다: (101.101)2=(5.625)10

2진수를 10진수로 변환할 때 모두가 주의해야 할 점은

1) 반드시 알아야 할 2진수의 각 비트 수 Weight

 2) 각 비트의 값을 구하려면

2. 2진수와 8진수의 변환

먼저 이해해야 할 사항 수학적 관계, 즉 23 =8, 24=16과 이 관계에서 8진수와 16진수가 파생됩니다. 즉, 3개의 2진수는 1개의 8진수를 나타내고 4개의 2진수는 1개의 16진수를 나타냅니다. . 숫자.

다음으로 4개의 숫자인 8, 4, 2, 1(23=8, 22=4, 21=2, 20=1)을 기억하세요. 이제 2진수와 8진수 간의 변환을 연습해 보겠습니다.

(1) 2진수를 8진수로 변환

방법: 삼위일체 방식, 즉 이진법의 소수점부터 시작하여 왼쪽(오른쪽)의 모든 세 자리를 한 자리로 취한 다음 이 세 개의 이진수를 더하는 방법을 취합니다. 그 결과 나온 숫자는 한 자리, 여덟 자리 이진수 체계가 되며, 숫자는 순서대로 배열되고, 소수점 위치는 변하지 않으며, 얻은 숫자는 우리가 찾고 있는 8진수입니다. . 세 자리를 왼쪽(오른쪽)으로 취하여 가장 높은(낮은) 자리에 이르면 세 자리를 만들 수 없으면 소수점의 가장 왼쪽(맨 오른쪽)에 0을 더하면 됩니다. (가장 낮은) 정수의 숫자를 세 명으로 구성합니다. 예시

 ① 2진수 101110.101을 8진수로 변환

결과는 101110.101을 8진수로 56.5로 변환

 ② 2진수 1101.1을 8진수로 변환

결과 얻기: 1101.1을 8진수에서 15.4로 변환

(2) 8진수를 2진수로 변환

방법: 1x3 방법, 즉 8진수를 3으로 분해 이진수, 세 자리 이진수를 사용하여 무게별로 8진수를 더하고 소수점 위치는 동일하게 유지됩니다. 예:

 ① 8진수 67.54를 2진수로 변환

따라서 8진수 67.54를 2진수 110111.101100, 즉 110111.1011로 변환합니다

위 질문에서, 보시다시피 8진수에서 2진수로의 변환을 계산합니다

먼저 8진수를 왼쪽에서 오른쪽으로 확장하면 각 비트가 세 자리로 확장되고 소수점 위치는 변경되지 않습니다

그런 다음 각 비트를 22로 확장하고 세 자리 21과 20(예: 4, 2, 1)을 사용하여 숫자를 구성합니다. 즉, a×22+ b×21 +c×20=해당 숫자의 숫자입니다. (a=1 또는 a=0, b=1 또는 b= 0, c=1 또는 c=0) abc를 해당 비트의 이진수로 배열

그런 다음 각 비트를 이진수로 변환

마지막으로 8진수를 2진수로 변환이라는 메시지가 나타납니다.

위 방법은 2진수와 8진수의 교환입니다. 문제를 풀 때 주의해야 할 점은

1) 그 교환은 한 자리를 세 자리로 변환하는 것입니다. 이는 2진수를 10진수로 변환하는 것과는 다릅니다

2) 0을 더하고 0을 뺄 때 소수점의 가장 왼쪽에 있는지 소수점의 가장 오른쪽에 있는지 주의해야 합니다( 는 정수의 가장 높은 자리와 소수의 가장 낮은 자리) ) 0을 더하거나 0을 빼면 오류가 발생합니다

3. 2진수를 16진수로 변환

방법: 유사 1자리(10 6)인 것을 제외하고 2진수에서 8진수로 변환 4자리(2진수)로 변환하는 방법은 아래에 자세히 설명되어 있습니다.

(1) 2진수를 16진수로 변환

방법: 포인원 방식, 즉 이진소수점부터 나누기점까지 왼쪽(오른쪽)의 네 자리를 모두 하나로 취한 후 무게에 따라 이진수 네 자리를 더하는 방식을 취합니다. 결과로 얻은 숫자는 16자리 이진수입니다. 그러면 이를 순서대로 배열하면 소수점 위치가 동일하지 않게 바뀌며, 얻은 숫자는 우리가 찾고 있는 16진수입니다. 왼쪽(오른쪽)으로 네 자리를 취하여 가장 높은(낮은) 자리에 이르면 그 네 자리를 만들 수 없으면 소수점의 가장 왼쪽(맨 오른쪽)에 0을 더하면 됩니다. (가장 낮은) 정수의 숫자로 4명을 구성합니다.

 ①예: 바이너리 11101001.1011을 16진수로 변환

결과 얻기: 바이너리 11101001.1011을 16진수로 E9.B

 ②예: 바이너리 11101001.1011을 으로 변환 16진수 101011.101이 16진수로 변환됩니다.

결과는 다음과 같습니다. 2진수 101011.101을 16진수로 2B.A로 변환

(2) 16진수를 2진수로 변환

방법: 1x4 방법을 사용합니다. 즉, 16진수를 4개의 2진수로 분해하고 4개의 2진수를 가중치로 더하여 16진수를 구성합니다. 소수점 위치는 동일하게 유지됩니다.

 ① 16진수 6E.2를 2진수로 변환

따라서 결과는 다음과 같습니다. 16진수 6E.2를 2진수 01101110.0010으로 변환하면 110110.001

8진수와 16진수

방법: 일반적으로 서로 직접 변환할 수 없습니다. 일반적으로 8진수(또는 16진수)를 2진수로 변환한 후 2진수를 소수점 위치인 16진수(또는 8진수)로 변환합니다. 변함없이 유지됩니다. 그러면 해당 변환은 위의 2진수를 8진수로 변환 및 2진수를 16진수로 변환

을 참조하세요. 5. 8진수를 10진수로 변환

(1) 8진수를 10진수로 변환

🎜>
방법: 가중치로 더하기, 즉 8진법의 각 비트에 있는 숫자에 비트 가중치를 곱한 후 그 합을 10진수로 더합니다.

예: ① 8진수 67.35를 10진수로 변환

(2) 10진수를 8진수로 변환

10진수를 8진수로 변환하는 방법은 두 가지가 있습니다.

1) 간접법: 먼저 10진수를 2진수로 변환한 후 2진수를 8진수로 변환합니다

2) 직접법: 앞서 말했듯이 2진수에서 8진수를 파생하므로 10진수를 사용할 수 있습니다. 2진수로 변환하는 것은 정수부분과 소수부분을 변환하는 것입니다. 아래에서 자세히 설명하겠습니다.

 ①정수부분
방법: 8로 나누고 나머지 방법을 취합니다. 즉, 정수 부분을 매번 8로 나누고, 나머지는 자릿수에 있는 숫자이고, 몫은 계속해서 8로 나누어지고, 나머지는 숫자에 있는 숫자입니다. 이전 자리 가중치를 적용하고 이 단계는 몫이 0이 될 때까지 계속됩니다. 마지막 숫자를 읽을 때 마지막 나머지부터 시작하여 첫 번째 나머지까지 읽습니다.

 ②소수부분

방법 : 8을 곱하여 정수부분을 반올림 즉, 소수부분에 8을 곱한 후 정수부분을 취하고 나머지 소수부분을 계속해서 곱한다. 8을 취하고 정수 부분을 취하고, 나머지 소수 부분은 소수 부분이 0이 될 때까지 8을 곱합니다. 결코 0이 될 수 없다면 이는 소수의 반올림과 같으며 임시로 3 반올림이라고 명명됩니다.

예: 10진수 796.703125를 8진수로 변환

해결책: 먼저 이 숫자를 정수 부분 796과 소수 부분 0.703125

정수 부분

십진수 부분

따라서 결과 십진수 796.703125는 8진수 1434.55로 변환됩니다.

위의 방법을 확인하시면 10진수를 먼저 변환하신 후 8진수로 변환하실 수 있습니다. 결과는 같은가요?

6. 16진수와 10진수 변환

16진수와 8진수 사이에는 유사점이 많습니다. 8진수와 10진수의 변환을 참고하여 직접 시도해 보세요. 위의 두 염기 간 변환.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.