Мне нужно написать скрипт Perl, который преобразует двоичное число, заданное как аргумент , в десятичное число. В этом вопросе есть намек на использование функции reverse.Perl-скрипт для преобразования двоичного числа в десятичное число
Мы должны предположить, что двоичное число в этом формате
EDIT: Это то, что я прогрессировал до (обратите внимание, это код из моего учебника, что я перепутались с) :
#!/usr/bin/perl
# dec2.pl: Converts decimal number to binary
#
die("No arguments\n") if ($#ARGV == -1) ;
foreach $number (@ARGV) {
$original_number = $number ;
until ($number == 0) {
$bit = $number % 2 ;
unshift (@bit_arr, $bit) ;
$number = int($number/2);
}
$binary_number = join ("", @bit_arr) ;
print reverse ("The decimal number of $binary_number is $original_number\n");
$#bit_arr = -1;
}
При выполнении:
>./binary.pl 8
The decimal number of 1000 is 8
Я не знаю, как это сделать, чтобы программа знала, чтобы добавить все 1 в число, которое вводится.
Можете ли вы представить, какое решение будет без кода? то есть, используя ручку и бумагу? Это было бы первым шагом, потому что, если вы не знаете, как решить проблему, никакое количество кода не поможет. –
Нет. Я никогда раньше не делал конверсии. – user3313728
Тогда вам нужно начать. Вы переходите справа налево, сопоставляя биты '1' с степенями 2, которые соответствуют их положениям (2^0, 2^1, 2^2 и т. Д.) И отбрасывают бит' 0'. Тогда вы суммируете все. –