Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Tadpole operators

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Tadpole operators

Avatar for taiseiue

taiseiue

May 24, 2024
Tweet

More Decks by taiseiue

Other Decks in Programming

Transcript

  1. Tadpole Operators†とは? • 副作⽤を起こさないインクリメント/デクリメントのこと • ⽇本語では⾮変インクリメント / ⾮変デクリメント • ⾒た⽬からtadpole(おたまじゃくし)演算⼦とも

    値が書きかわらない 演算⼦ 同じ意味の式 意味 -~x X + 1 Xに向かって値が⼊って いくイメージ ~-x X - 1 Xから値が出ていく イメージ †https://devblogs.microsoft.com/oldnewthing/20150525-00/?p=45044
  2. Tadpole Operators:利点 • 単項演算⼦なので優先順位が⾼い • (x + 1) * (x

    - 1) なら -~x * ~-x と書ける • インクリメント/デクリメントと違い副作⽤がない
  3. ネタバラシ • 本当は`~`(ビット反転)と`-`(符号反転)の組み合わせ • かっこで整理すると ‒(~x)、~(-x)に -(~x) == x+1 ~x

    + 1 == -x を常に満たす x + ~x + 1 == 0 X=5 0101 0011 Y=~X +1010 1100 Z=X+Y 1111 1111 α=Z+1 + 1 β 1 0000 0000 ビット 反転 移項 β α