Опубликовано Bash в Ср, 23/12/2009 — 20:56
Интерпретатор командной оболочки воспринимает числа как десятичные, в противном случае числу должен предшествовать специальный префикс, либо число должно быть записано в особой нотации. Числа, начинающиеся с символа 0, считаются восьмеричными. если числу предшествует префикс 0x, то число считается шестнадцатиричным. Число, в записи которого присутствует символ #, расценивается как запись числа с указанием основы счисления в виде ОСНОВА#ЧИСЛО.
Пример 8-4. Различные представления числовых констант
-
#!/bin/bash
-
# numbers.sh: Различные представления числовых констант.
-
# Десятичное: по-умолчанию
-
let «dec = 32»
-
echo «десятичное число = $dec« # 32
-
# Вобщем-то ничего необычного.
-
# Восьмеричное: числа начинаются с ‘0’ (нуля)
-
let «oct = 032»
-
echo «восьмеричное число = $oct« # 26
-
# Результат печатается в десятичном виде.
-
# ——— —— — ——-
-
# Шестнадцатиричное: числа начинаются с ‘0x’ или ‘0X’
-
let «hex = 0x32»
-
echo «шестнадцатиричное число = $hex« # 50
-
# Результат печатается в десятичном виде.
-
# Другие основы счисления: ОСНОВА#ЧИСЛО
-
# ОСНОВА должна быть между 2 и 64.
-
# для записи ЧИСЛА должен использоваться соответствующий ОСНОВЕ диапазон символов,
-
# см. ниже.
-
let «bin = 2#111100111001101»
-
echo «двоичное число = $bin« # 31181
-
let «b32 = 32#77»
-
echo «32-ричное число = $b32« # 231
-
let «b64 = 64#@_»
-
echo «64-ричное число = $b64« # 4094
-
#
-
# Нотация ОСНОВА#ЧИСЛО может использоваться на ограниченном
-
#+ диапазоне основ счисления (от 2 до 64)
-
# 10 цифр + 26 символов в нижнем регистре + 26 символов в верхнем регистре + @ + _
-
echo
-
echo $((36#zz)) $((2#10101010)) $((16#AF16)) $((53#1aA))
-
# 1295 170 44822 3375
-
# Важное замечание:
-
# —————
-
# Использование символов, для записи числа, выходящих за диапазо,
-
#+ соответствующий ОСНОВЕ счисления
-
#+ будет приводить к появлению сообщений об ошибках.
-
let «bad_oct = 081»
-
# numbers.sh: let: oct = 081: value too great for base (error token is «081»)
-
# Для записи восьмеричных чисел допускается использовать
-
#+ только цифры в диапазоне 0 — 7.
-
exit 0 # Спасибо Rich Bartell и Stephane Chazelas, за разъяснения.
- Страница для печати
- 10480 просмотров