спасение grub: "ошибка чтения сектора 0x802 с hd0"

Я не знаю, как объявлять двоичные числа; но ваш синтаксис неверен.

У '@' был собственный анализатор выражений, и каким-то образом он путался с основным анализатором, если выражение не заключено в скобки. Согласно справочной странице -, в некоторых случаях требуются пробелы, включающие побитовые операторы. Я предлагаю использовать пробелы везде, так как там было много ошибок.

Это будет работать гладко:

@ y = 1001; @ z = 0110;
@ x = ( $y | $z ); echo $x

Обратите внимание, что, как и в C, числа, начинающиеся с 0, являются восьмеричными, поэтому значение $z равно 72 в десятичном виде.

Восьмеричные и шестнадцатеричные числа используются потому, что они точно представляют двоичные числа. Восьмеричная цифра представляет 3 двоичных цифры.

binary <--> octal
   000         0
   001         1
   010         2
   011         3
   100         4
   101         5
   110         6
   111         7

Если значения y и z, которые вы записали, представлены в двоичном формате, это правильная форма (с использованием восьмеричных чисел)

@ y = 011; @z = 006;
@ x = ( $y | $z ); echo $x
15

Существует еще одно решение: используйте любую команду -строкового калькулятора, которую вы хотите, используя выражение в обратных -кавычках. Я предлагаю попробоватьcalc , bc или awk с этим порядком.

Пример с вычислением:

set x = `calc '0b1001 | 0b110'`; echo $x
15

15 (дес )= 017 (окт )= 0xF (шестн )= 0b1111 (бин)

2
07.05.2017, 16:31
1 ответ

переключитесь с режима UEFI на устаревший режим в настройках BIOS, тогда он точно будет работать

0
08.03.2020, 13:15

Теги

Похожие вопросы