• 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

Hosting forpsi easy 1 pln
0 głosów
170 wizyt
pytanie zadane 15 kwietnia w C i C++ przez snajper414 Nowicjusz (140 p.)
zamknięte 15 kwietnia 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 przez tkz Nałogowiec (42,000 p.)
https://godbolt.org/ sprawdź sam, ale podpowiem, że przy optymalizacji kompilatorów, to żadna.
komentarz 15 kwietnia przez snajper414 Nowicjusz (140 p.)
Wow, nie widziałem jeszcze takiego kompilatora. Serdecznie dziękuję!

1 odpowiedź

0 głosów
odpowiedź 15 kwietnia przez tangarr Mędrzec (154,200 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 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ź 461 wizyt
0 głosów
2 odpowiedzi 932 wizyt
pytanie zadane 7 listopada 2022 w Python przez niezalogowany
+1 głos
0 odpowiedzi 223 wizyt
pytanie zadane 12 marca 2022 w C i C++ przez Bilib Użytkownik (970 p.)

92,081 zapytań

140,736 odpowiedzi

317,696 komentarzy

61,401 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -50% (w dniach 24.11 - 29.11 z okazji Black Friday, a potem będzie to -30%) na bilety w wersji "Standard"! Więcej informacji na temat akademii znajdziecie tutaj. Dziękujemy Sekurakowi za tak fajną zniżkę dla 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 15% 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!

...