Long version: There are a number of ways which are lexically shorter, do the same thing only assuming that v is already either 0 or 1, are not self-documenting, and perform worse or marginally better at best. Only a very tortured definition would call any of these things "better".
Actually the "v = (v + 1) % 2" approach has merit -- in the past I've had to write MHEG textual notation, which is a declarative language where the syntax for conditionals is phenomenally ugly and ludicrously verbose, and this method is vastly more concise (2 lines versus about 10)
Some of us prize readability over neat tricks. I think there are a 100 ways most of these answers could be misinterpreted by people. Code is read more than it is written, and programs rarely work better because you wrote it slightly more "impressively". Modern compilers do much of this sort of stuff that they are doing in this thread, but they do it in a repeatable manner which future programmers don't have to puzzle out.
Long version: There are a number of ways which are lexically shorter, do the same thing only assuming that v is already either 0 or 1, are not self-documenting, and perform worse or marginally better at best. Only a very tortured definition would call any of these things "better".
Although v = v ? 0 : 1 isn't that bad.