Программирование : Вопрос 1 : 17

Одним выражением без условий найти следующее число, которое содержит ровно столько же бит, установленных в единицу, сколько и данное. В случае переполнения или если такого числа не существует, допускается неопределенное поведение. Например,

1 -> 2 
2 -> 4 
3 -> 5 
4 -> 8 
5 -> 6 
6 -> 9 
7 -> 11 
8 -> 16 
9 -> 10 
10 -> 12 
11 -> 13 
12 -> 17 
13 -> 14 
14 -> 19 
15 -> 23 
16 -> 32 
17 -> 18 
18 -> 20 
19 -> 21 

 

Уважаемые учащиеся ниже Вы сможете увидеть ответ, перед тем, как ответить, пожалуйста, постарайтесь написать для себя ответ на черновике, и только потом сравните наш ответ с Вашим: 

 

 

 

 

 

Верно ли наше решение?

Ответ:

Идея одна, вариантов много. Вот несколько возможных решений, иллюстрирующих ее:

uint64_t y = (x+(x&(-x)))|(((x+(x&(-x)))^x)/((x&(-x))<<2)); 


uint64_t y = ((x|(x-1))+1)+((x&((((x|(x-1))+1)^(x|(x-1)))>>2))/(x&(-x))); 

 

1 балл


© Copyright © 2017 - 2019 Все права защищены. Бесплатное онлайн образование.
  • https://disdik.munabarat.go.id/nusantara/slot/
  • https://dispendik.sidoarjokab.go.id/nuansa/gacor/
  • https://dkpd.grobogan.go.id/jakarta/gacor/
  • https://sbobet88.blog.unsia.ac.id
  • https://pafinusantara.blog.unsia.ac.id/bet88
  • https://idn-poker.blog.unsia.ac.id
  • https://slot777-gacor.blog.unsia.ac.id
  • https://agen-188bet.blog.unsia.ac.id
  • https://situs-slot.blog.unsia.ac.id
  • https://bet88-slot.blog.unsia.ac.id
  • https://2021.kinerja.ekon.go.id/up/slot777
  • https://2021.kinerja.ekon.go.id/halal/bet88
  • https://program-gacor.blog.unsia.ac.id
  • surapati.ac.id
  • untagsby.ac.id
  • kingandiboston.com
  • janeashton.com
  • redbrickcafechester.com
  • villanosdeljazz.com
  • slot