고급 Bash 스 크 립 트 프로 그래 밍 가이드 (9): 숫자 상수
2528 단어 shell
견지했어
셸 스 크 립 트 는 기본적으로 숫자 를 10 진수 로 처리 합 니 다. 이 숫자 가 특별한 태그 나 접 두 사 를 사용 하지 않 는 한 0 으로 시작 하면 8 진수 입 니 다. 0 x 로 시작 하면 16 진수 입 니 다. 숫자 중간 에\# 가 박 혀 있 으 면 BASE\# NUMBER 형식의 표기 법 (범위 와 기호 제한 이 있 음) 으로 여 겨 집 니 다.
다음은 구체 적 인 실례 에 근거 하여 이 몇 가지 표시 방법 에 대해 깊이 있 게 분석한다.
결과:
분석:
1. 첫 번 째 설명 을 추가 하지 않 았 습 니 다. 기본 값 은 10 진법 입 니 다. 32 즉 32 입 니 다.
2. 이 데 이 터 는 특수 접두사 '0' 을 추 가 했 습 니 다. 8 진법 입 니 다. 032 는 8 진법 의 32 를 나타 내 고 환산 하 는 10 진법 은 (3 * 8 의 1 차방 + 2 * 8 의 0 차방), 즉 10 진법 의 24 + 2 = 26 입 니 다.
3. 이 데 이 터 는 특수 한 접두사 '0x' 를 추 가 했 습 니 다. 16 진법 입 니 다. 0x 32 는 16 진법 의 32 를 나타 내 고 환산 하 는 10 진법 은 (3 * 16 의 1 차방 + 2 * 16 의 0 차방) 입 니 다. 즉, 10 진법 의 48 + 2 = 50 입 니 다.
4. 이 데 이 터 는 BASE\# NUMBER 형식 입 니 다. BASE = 2, NUMBER = 1101 은 바 이 너 리 의 1101 을 나타 내 고 환산 하 는 10 진법 은 (1 * 2 의 3 차방 + 1 * 2 의 2 차방 + 0 * 2 의 1 차방 + 1 * 2 의 0 차방), 즉 10 진법 의 8 + 4 + 0 + 1 = 13 입 니 다.
5. 이 데 이 터 는 BASE\# NUMBER 형식, BASE = 32, NUMBER = 77 입 니 다. 사실은 32 진법 의 뜻 입 니 다. 77 은 32 진법 의 77 을 나타 내 고 환산 의 10 진법 은 (7 * 32 의 1 차방 + 7 * 32 의 0 차방), 즉 10 진법 의 224 + 7 = 231 입 니 다.
5. 이 데 이 터 는 BASE\# NUMBER 형식, BASE = 64, NUMBER = @,사실은 64 진법 이라는 뜻 입 니 다. @즉 32 진법 을 나타 내 는 @,여기 서 중점적으로 설명 하 자 면 이 64 진법 에서 각 조 는 64 자리, 즉 0 - 63, 0 - 9 는 0 - 9 로 표시 하지만 뒤의 숫자 는 모두 두 자리 수 이기 때문에 셸 은 이 두 자리 수 를 대체 하 는 간단 한 방법 을 제시 했다. 10 - 35 이 26 자 는 순서대로 26 개의 소문 자로 표시 하고 36 - 61 이 26 자 는 순서대로 26 개의 대문자 로 표시 한다.(A - Z 순 으로) 마지막 에 62 와 63 이라는 두 분 이 남 았 습 니 다. 똑똑 한 셸 은 '@' 으로 62 를 표시 하고 '' 으로 62 를 표시 하기 때문에 위의 방법 이 있 습 니 다. 그래서 십 진법 으로 환산 하면 62 * 64 의 1 차방 + 63 * 64 의 0 차방, 즉 3968 + 63 = 4031 입 니 다.
중요 한 주의사항: 주어진 진 을 초과 한 숫자 를 사용 하면 오류 가 발생 할 수 있 습 니 다.
#!/bin/bash
let "dec = 32"
echo "decimal number = $dec"
let "oct = 032"
echo "octal number = $oct"
let "hex = 0x32"
echo "hexadecimal number = $hex"
let "bin = 2#1101"
echo "banary number = $bin"
let "b32 = 32#77"
echo "base-32 number = $b32"
let "b64 =64#@_"
echo "base-64 number = $b64"
exit 0
제시 수치 가 너무 크다. 즉, 8 진법 의 최대 치 는 7 이 고 위의 두 번 째 는 8 이기 때문에 오 류 를 제시 합 니 다.
지금까지 보면 실 용적 인 8 진법 입 니 다. 16 진법 은 '0', '0x' 로 표시 하지 않 아 도 됩 니 다. 모두 BASE\# NUMBER 형식 으로 대체 할 수 있 습 니 다. 다음은 다음 테스트 검증 을 하 겠 습 니 다.
4. 567913. 결과 와 위의 결 과 는 일치 합 니 다.
먼저 여기까지, O (∩ ∩) O ~
내 칼럼 주소:http://blog.csdn.net/column/details/shell-daily-study.html
계속...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.