В этой задаче решателю предлагается вывести перевернутые биты 32-битного беззнакового целого числа.
В деталях, вам будет предоставлено целое число —
9 (основание 10)
Вы должны написать функцию, которая возвращает результат 32-битного беззнакового десятичного целого числа —
4294967286 (основание 10)
Весь код будет на Javascript, но вы можете использовать любой язык для решения этой задачи.
Как перейти от 9 к 4294967286?
- сначала возьмите входные данные и преобразуйте их в строку с помощью функции toString().
let s=n.toString(2);
- инициализируйте новую переменную и присвойте ей значение 32-(длина строки)
let temp=32-s.length;
Почему temp равно 32-s.length — переменная s хранит число в двоичном формате, т.е. n=9 в десятичной системе счисления и s будет хранить «1001» в двоичном формате {datatype of s is string here}, в данном случае вас просят сгенерировать 32-битное целое число, поэтому, чтобы сложить оставшиеся биты в s, мы присваиваем temp по заданной формуле.
- инициализировать новую переменную и присвоить ей пустую строку
let temp_s="";
for(let i=0;i<temp;i++)
temp_s+="0";
temp_s добавляет 0 к пустой строке длины temp.
- res_s будет содержать строку, заполненную 0, и преобразованную строку числа в двоичном формате
let res_s=temp_s+s;
res_s=00000000000000000000000000001001
- flip_s будет хранить перевернутую строку, так как 1 будет преобразована в 0, а 0 в 1
let flip_s="";
- мы используем цикл for для перехода по строке res_s
for(let i of res_s) {
if(i==="0")
flip_s+="1";
else if(i==="1")
flip_s+="0";
}
Здесь каждый элемент строки проверяется на 0 и 1 и присваивается 1 и 0 соответственно.
flip_s=11111111111111111111111111110110
- вывести значение заданного выражения на консоль/экран вызова
console.log( parseInt(flip_s, 2));
Здесь метод parseInt() преобразует переменную flip_s в десятичную форму и выводит результат в виде
4294967286
Эта задача входит в комплект HackerRank’s 1 Month Interview Prep Kit.