Можно установить index_format
переменная для включения всего способа различных деталей о каждом сообщении. В частности, Вы, вероятно, хотите %d
строка формата, которая вставляет дату, отформатированную согласно значению date_format
, или одна из других строк формата даты, такой как %{fmt}
, %[fmt]
, и т.д. Как пример, вот мое значение по умолчанию index_format
установка:
set 'index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"'
Смотрите на документацию для получения дополнительной информации о том, что можно настроить, и что представляют расширенные строки формата даты.
В странице справочника удара говорится:
! ~ logical and bitwise negation
Числа со знаком обычно хранятся в дополнительном представлении Two:
...
-4 = 1100
-3 = 1101
-2 = 1110
-1 = 1111
0 = 0000
1 = 0001
2 = 0010
3 = 0011
...
Это означает, берете ли Вы число как 2, оно поразрядно интерпретируется как 0010. После поразрядного отрицания это становится 1101, который является представлением-3.
Это - результат дополнительной арифметики two.
~
поразрядное отрицание, которое инвертирует все биты, управляемые на. Дополнительная арифметика Two работает путем инвертирования всех битов и добавления 1. Так как Вы только зеркально отразили биты, но не добавили один, Вы получаете то же число, инвертированное, минус одно.
Википедия имеет хорошую статью о дополнении two здесь.
Как пример:
0011
1101
0011
дает Вам 1100
, который является-4, так как Вы не добавили 1.~ оператор является оператором битового "НЕ". Используя его не то же как отрицание числа.
Из Википедии операция битового "НЕ" равна взятию дополнения two значения минус одно:
НЕ x = −x − 1
Отрицание двоичного числа эквивалентно принятию его значения с двумя дополнениями.
Используя ~ оператор NOT = принимают его значение с одним дополнением.
В более простых терминах, ~ просто зеркально отражает все биты двоичного представления.
Для Ваших примеров:
33 (десятичных числа) = 0x00100001 (8-разрядный двоичный файл)
~33 = ~0x00100001 = 0x11011110 =-34 (десятичное число)
Или в десятичных системах счисления, с помощью ~x =-x - 1 формула:
~33 =-33 - 1 =-34
и
~255 =-255 - 1 =-256
Проблема в том, что ~ является битовым оператором. Следовательно, вы отрицаете больше битов, чем вы, возможно, намереваетесь. Вы можете видеть это лучше, преобразуя результаты в шестнадцать, например:
result_in_hex=$(printf "%x" $(( ~33 ))); echo $result_in_hex
ffffffffffffffde
в сравнении с тем, что у вас было:
result_in_dec=$(printf "%d" $(( ~33 ))); echo $result_in_dec
-34
Я предполагаю, что вы имеете в виду свести на нет 0x33. Если это так, то это сработает:
result_in_hex=$(printf "%2x" $(( ( ~ 0x33 ) & 0xFF))); echo $result_in_hex
cc
Вы также должны использовать &, который является bit-wise и оператор, чтобы избежать всех ff в начале.
Сначала вы должны понять, что 33 — это 32-битное или 64-битное число.
Для удобства я беру восьмибитное число (= 1 байту)
десятичное число 33 состоит из восьми битов :00100001, перестановка битов дает 11011110.
Поскольку старший бит равен 1, это отрицательное число.
При печати отрицательного числа система печатает знак минус, а затем дополнение до двух отрицательного числа.
Дополнение до двух равно :перестановке битов и добавлению 1.
11011110 ==> 00100001 ==> добавление 1 ==> 00100010 приводит к десятичному числу 34 за знаком минус.