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

PHP 기본 튜토리얼

巴扎黑
巴扎黑원래의
2016-11-21 10:47:161275검색

상세 설명 : 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입니다.
8단계: 몫 1을 2로 나누고, 몫 0의 나머지는 1입니다.
9단계, 읽어보세요. 마지막 자리는 2로 여러 번 나누어 얻은 것이므로 가장 높은 자리이므로 마지막 나머지부터 앞으로 나오는 숫자, 즉 10101000
(2) 소수부
방법: 2를 곱하고 반올림하여 순서대로 배열한다. 즉, 소수부에 2를 곱한 다음 정수부를 취하고, 계속해서 나머지 소수부에 2를 곱한 다음 정수부를 취하고, 남은 소수 부분을 2로 나누어 소수 부분
이 0이 될 때까지 취합니다. 0이 될 수 없는 경우 소수점 자리를 반올림하는 것과 같습니다. 필요한 만큼 소수 자릿수를 유지하는 경우 다음 숫자가 0인지 1인지에 따라 숫자를 반올림합니다. 0이면 반올림합니다. 1이면 숫자 하나를 더합니다. 즉, 0은 1로 반올림됩니다. 판독값은 이전 정수에서 다음 정수로 읽어야 합니다. 예는 다음과 같습니다.
예 1: 0.125를 이진수로 변환
결과: 0.125를 이진수(0.001)2로 변환
분석: 단계 1, 0.125에 2를 곱하면 0.25가 되고 정수 부분은 0이 되고 소수 부분은 0.25가 됩니다.
두 번째 단계에서는 소수 부분에 0.25를 2를 곱하면 0.5가 되고 정수 부분은 0이 됩니다. 소수 부분은 0.5입니다.
세 번째 단계는 소수 부분 0.5에 2를 곱하여 1.0을 얻는 것입니다. 그런 다음 정수 부분은 1이고 소수 부분은 0.0입니다.
네 번째 단계는 다음부터 시작하여 읽는 것입니다. 첫 번째 숫자와 마지막 숫자(0.001)까지 읽습니다.
예시 2, 0.45를 이진수로 변환(소수점 넷째 자리까지 유지)
위 단계에서 알 수 있듯이 다섯 번째 곱셈을 하면 결과는 0.4가 되고 소수 부분은 계속해서 곱해진다. 2를 곱하면 0.8이 되고, 1.6이 될 때까지 계속 곱하면 결국 소수 부분이 0이 되는 것이 불가능하기 때문에 이때는 소수점 이하 반올림법을 배워야 합니다. 하지만 이진수에는 0과 1만 있습니다. 따라서 0에서 1로 반올림됩니다. 이 역시 변환 중 컴퓨터 오류로 인해 발생하지만 예약된 숫자가 많고 정확도가 매우 높기 때문에 무시할 수 있습니다.
그러면 0.45를 이진수로 변환하면 대략 0.0111과 같다고 결론을 내릴 수 있습니다.
위에서 소개한 방법은 십진수를 이진수로 변환하는 방법입니다. 모두가 주목해야 할 점은
1) 십진수 변환입니다. 2진수로 변환하려면 정수와 10진수 두 부분으로 나누어 따로 변환해야 합니다
2) 정수로 변환할 때는 2로 나누는 방식을 사용하고, 10진수로 변환할 때는 2곱셈 방식을 사용합니다. .
3) 판독값에 주의하세요 방향
따라서 위의 방법을 통해 십진수 168.125를 이진수로 변환하면 10101000.001, 즉 이진수로 변환한 십진수는 대략 10101000.0111이라는 결론을 내릴 수 있습니다.
(3) 이진수를 정수와 소수부로 나누지 않고 십진수로 변환
방법: 가중치로 더하기, 즉 이진수의 각 비트에 가중치를 곱한 후 그 합을 십진수로 더한다. 예시
이진수 101.101을 십진수로 변환합니다.
결과는 다음과 같습니다: (101.101)2=(5.625)10
이진수를 십진수로 변환할 때 모두가 주의해야 할 점은
1) 이진수 각 비트의 가중치를 알아야 합니다
2) 각 비트의 값을 찾을 수 있어야 합니다
2. 2진수와 8진수의 변환
먼저 수학적 관계, 즉 23=8, 24=16, 8진수와 8진수의 관계를 이해해야 합니다. 16진수는 이것을 사용하고 있습니다
라는 관계에서 파생되었습니다. 즉, 3개의 이진수는 8진수를 나타내고, 4개의 이진수는 16진수를 나타냅니다.
다음으로 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진수로 변환
방법: 1/3 방식, 즉 8진수를 3개의 이진수로 분해하고, 세 자리의 이진수를 이용하여 무게에 따라 8진수를 더하는 방식을 취하며, 그리고 소수점 위치는 평소대로입니다. 예:
 ① 8진수 67.54를 2진수로 변환
따라서 8진수 67.54를 2진수 110111.101100, 즉 110111.1011로 변환합니다.
위 질문에서 알 수 있듯이 8진수 변환을 계산합니다. 2진수로
먼저 각 8진수를 왼쪽에서 오른쪽으로 세 자리로 확장하고 소수점은 그대로 둡니다
그런 다음 각 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진수와 8진수를 바꾸는 방법입니다. 문제를 풀 때 주의해야 할 점은
1) 둘 사이의 교환은 2진수와 3자리를 바꾸는 것입니다. 과 8진수 변환
2) 0을 더하고 0을 뺄 때는 소수점 왼쪽 끝이나 소수점 가장 오른쪽(즉, 가장 높은 자리)에 0을 더하거나 0을 빼는 것에 모두 주의해야 합니다. 그렇지 않으면 오류가 발생합니다
3. 2진수를 16진수로 변환
방법: 한 자리(16진수)를 변환한다는 점을 제외하면 2진수를 8진수로 변환하는 것과 유사합니다. 및 4자리(2진수)에 대해서는 아래에서 자세히 설명합니다.
(1) 2진수를 16진수로 변환
방법: 나눗셈은 2진수 소수점부터 시작하는 4진수 방식을 취합니다. 점, 왼쪽(오른쪽)의 네 자리를 하나씩 취하여 이 네 자리를 변환한 다음, 무게에 따라 이진수를 더하고, 얻은 숫자는 16자리 이진수로 배열됩니다. 순서대로 유지되며, 얻은 숫자는 우리가 찾고 있는 16진수입니다. 왼쪽(오른쪽)으로 네 자리를 취하여 가장 높은(낮은) 자리에 이르면 그 네 자리를 만들 수 없으면 소수점의 가장 왼쪽(맨 오른쪽)에 0을 더하면 됩니다. (가장 낮은) 정수의 숫자로 4명을 구성합니다.
 ①예: 이진수 11101001.1011을 16진수로 변환
결과 가져오기: 이진수 11101001.1011을 16진수로 E9.B로 변환
②예: 101011.101을 16진수로 변환
결과는 다음과 같습니다. 101에서 16진수로 2B .A
(2) 16진수를 2진수로 변환
방법: 1을 4로 나눈 것, 즉 16진수 한 자리를 취한다. 숫자를 2진수 4자리로 분해하고, 가중치에 따라 2진수 4자리를 더한다. 16진수를 구성합니다. 소수점 위치는 동일하게 유지됩니다.
 ① 16진수 6E.2를 2진수로 변환
따라서 결과는 다음과 같습니다. 16진수 6E.2를 01101110.0010으로 2진수로 변환하면 110110.001
IV. 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) 직접 방법: 앞서 말했듯 8진수는 2진수에서 파생되므로 비슷한 방법을 사용하여 10진수를 2진수로 변환하거나 정수 부분과 10진수 부분 변환을 변환할 수 있는데, 에서 설명하겠습니다. 자세한 내용은 아래:
 ①정수 부분
방법: 8로 나누고 나머지 방법을 취합니다. 즉, 정수 부분을 매번 8로 나누고, 나머지는 자릿수에 있는 숫자이고, 몫은 계속해서 8로 나누어지고, 나머지는 숫자에 있는 숫자입니다. 이전 자리 가중치를 적용하고 이 단계는 몫이 0이 될 때까지 계속됩니다. 마지막 숫자를 읽을 때 마지막 나머지부터 시작하여 첫 번째 나머지까지 읽습니다.
 ②소수부분
방법: 8을 곱하여 정수부분을 반올림 즉, 소수부분에 8을 곱한 후 정수부분을 취하고, 계속해서 나머지 소수부분에 8을 곱한 후 정수를 취한다. 나머지 소수 부분은 소수 부분이 0이 될 때까지 8을 곱합니다. 결코 0이 될 수 없다면 이는 소수의 반올림과 같으며 임시로 3 반올림이라고 명명됩니다.
예: 10진수 796.703125를 8진수로 변환
해결 방법: 먼저 이 숫자를 정수 부분 796과 소수 부분 0.703125로 나눕니다.
정수 부분
소수 부분
따라서 결과는 10진수 796.703125 8진수를 1434.55로 변환
위의 방법을 확인하시면 10진수를 먼저 변환하신 후 8진수로 변환하여 결과가 같은지 확인하실 수 있습니다
6. 16진수와 10진수의 변환
16진수 시스템과 8진수 시스템은 유사점이 많습니다. 위의 8진수 시스템과 10진수 시스템 간의 변환을 참조하여 두 시스템 간의 변환을 시도할 수 있습니다.

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