• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Jak działa inkrementacja a jak działa bitowa alternatywa

Object Storage Arubacloud
0 głosów
447 wizyt
pytanie zadane 15 kwietnia 2023 w C i C++ przez snajper414 Nowicjusz (140 p.)
zamknięte 15 kwietnia 2023 przez snajper414

Witajcie!


Uczę się C++ z nową symfonią i trochę się bawię na różnych głupich przykładach aby zrozumieć to i owo. Teraz robię własny generator liczb losowych budujący wyrazy z pojedynczych bitów :) Naszło mnie jednak pytanie wręcz egzystencjalne i nie mam pojęcia do którego działu je skierować. A pytanie brzmi:

Zakładając że ostatni bit w zmiennej jest zawsze zerem, to jaka jest wtedy różnica pomiędzy zwykłą inkrementacją: ++ a bitową alternatywą: |1 ?

Chodzi mi nie o wynik działania, ale o to jak dokładnie kompilator (oraz ALU procesora) je przeprowadzi. Pytam się czy jest jakaś różnica pomiędzy dodawaniem a inkrementacją? Albo między inkrementacją a opisanym wyżej przypadkiem?

Wiem, że bitor porówna każdą parę bitów i zwróci dodatkowy wyraz. Jak jednak przebiega operacja dodawania? Czy jest bardziej złożona (zasobożerna) od bitowej alternatywy?

Oraz:

Czy inkrementacja to dosłownie suma wyrazu w zmiennej oraz stałej dosłownej reprezentowanej przez pojedynczy bit na końcu? A może owo działanie jest przeprowadzane jakoś bardziej pomysłowo (szybciej)?

Szukałem co nieco... Ale większość opisów mówi tak: "Procesor posiada jednostkę która służy do dodawania". Koniec opisu. indecision

Ktoś ma jakiś ciekawy link lub źródło gdzie owe działania byłyby opisane dokładniej od strony "kuchni"? Byłbym wdzięczny! :)

Pozdrawiam!


 

komentarz zamknięcia: Kompilator z linka od tkz daje odpowiedź na pytania które zadałem.
1
komentarz 15 kwietnia 2023 przez tkz Nałogowiec (42,000 p.)
https://godbolt.org/ sprawdź sam, ale podpowiem, że przy optymalizacji kompilatorów, to żadna.
komentarz 15 kwietnia 2023 przez snajper414 Nowicjusz (140 p.)
Wow, nie widziałem jeszcze takiego kompilatora. Serdecznie dziękuję!

1 odpowiedź

0 głosów
odpowiedź 15 kwietnia 2023 przez tangarr Mędrzec (154,860 p.)
Inkrementacje musisz rozważać w dwóch wersjach: preinkrementacja i postinkrementacja. Teoretycznie obie instrukcje powinny wygenerować inny kod, ale w zależności od sposobu użycia kompilator może zoptymalizować postinkrementację do preinkrementacji. Preinkrementacja (jeżeli nie zostanie przeciążona) to po prostu dodanie 1 do zmiennej.
Alternatywa bitowa nie sprawdza wartości bitów aby się wykonać.
@tkz dał ci świetny link do sprawdzania do jakiej postaci zostanie skompilowany twój kod. Polecam porównać wynik bez optymalizacji jak i z włączonymi optymalizacjami (flagi -O1, -O2 lub -O3).
komentarz 15 kwietnia 2023 przez snajper414 Nowicjusz (140 p.)
O tych dwóch sposobach inkrementacji już wiedziałem natomiast byłem po prostu ciekaw jak to wszystko się kompiluje na kod programowy. Powyższy link to fajne narzędzie i zaraz wszystko sobie potestuję. Dziękuję za odpowiedź :) Zamykam.

Podobne pytania

0 głosów
1 odpowiedź 507 wizyt
0 głosów
2 odpowiedzi 1,342 wizyt
pytanie zadane 7 listopada 2022 w Python przez niezalogowany
+1 głos
0 odpowiedzi 327 wizyt
pytanie zadane 12 marca 2022 w C i C++ przez Bilib Użytkownik (990 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,967 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...