AndreiFaikov1943
?>

Значение арифметического выражения: 8^511 – 4^511 + 2^511 – 511 записали в системе счисления с основанием 2. Сколько значащих нулей в этой записи?

Информатика

Ответы

kalina1372

8^{511} - 4^{511} + 2^{511} - 512 + 1 = 2^{1533} - 2^{1022} + 2^{511} - 2^{9} + 2^{0}

Число 2^{n}_{10}  в двоичной системе счисления выглядит как единица и n нулей за ней.

То есть у числа 2^{1533} ровно 1533 значащих нуля, а у числа 2^{1022} их ровно 1022.

Разница же таких чисел порождает единицы между первыми единицами изначальных чисел. Например, 2^{5} - 2^{3} \rightarrow 100000 - 1000 = 11000. Появилось 5-3 = 2 единицы и осталось 3 (от последнего числа) значащих нуля.

Зная это, мы можем разобраться, сколько значащих нулей в загаданном числе.

2^{1533} - 2^{1022} + 2^{511} - 2^{9} + 2^{0}

2^{1533} - 2^{1022} даёт нам 1022 значащих 0 и 511 единиц перед ними.

2^{511} - 2^{9} даёт нам 9 значащих 0 и 502 единицы перед ними.

2^0 даёт нам 0 значащих 0 и 1 единицу перед ними (просто единица).

Теперь сложение.

Начинаем с самых больших разрядов. Понижаясь, вычитаем количество образовавшихся в середине единиц.

1022 - 502 - 1 = 519 - ответ.

stendpost

Python

Объяснение:

код:

import random

n = random.randint(10, 100)

t = []

p = []

for i in range(1, n):

   if n % i == 0:

       i = str(i)

       t += i

       i = int(i)

       for k in range(2, i):

           if i % k == 0:

               i = str(i)

               p += i

               break

t = list(map(int, t))

p = list(map(int, p))

for x in p:

   if x in t:

       t.remove(x)

t.remove(1)

if len(t) == 0:

   t.append(n)

   print(*t)

else:

   s = [str(x) for x in t]

   print('simple', '(', n, ')', '=', *s)

zverevahelen

Python

Объяснение:

код:

import random

n = random.randint(10, 100)

t = []

p = []

for i in range(1, n):

   if n % i == 0:

       i = str(i)

       t += i

       i = int(i)

       for k in range(2, i):

           if i % k == 0:

               i = str(i)

               p += i

               break

t = list(map(int, t))

p = list(map(int, p))

for x in p:

   if x in t:

       t.remove(x)

t.remove(1)

if len(t) == 0:

   t.append(n)

   print(*t)

else:

   s = [str(x) for x in t]

   print('simple', '(', n, ')', '=', *s)

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Значение арифметического выражения: 8^511 – 4^511 + 2^511 – 511 записали в системе счисления с основанием 2. Сколько значащих нулей в этой записи?
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

albina6580
cheremetdiana
nadlen76
Nataliatkachenko1
Вера1072
stendpost
grekova5
myhauz
shuttse
anitanemtsewa
iptsr4968
Caragyant
Бурмистрова-Ирина660
Anzhelika-Bulanov802
yelena