From: "torimus (Torimus GL)" Date: 2013-07-28T04:03:00+09:00 Subject: [ruby-core:56234] [ruby-trunk - Bug #8697] Fixnum complement operator issue Issue #8697 has been updated by torimus (Torimus GL). =begin When one's completion is applied to zero, the result is ((*not*)) -1 but so called "negative zero", ie. -0. What you are talking about is two's completion, ie. "the value of 1 is then added to the resulting value of bitwise not operation". It's all about improper use of terminology. See related articles on Wikipedia: (()) and (()) . =end ---------------------------------------- Bug #8697: Fixnum complement operator issue https://bugs.ruby-lang.org/issues/8697#change-40724 Author: torimus (Torimus GL) Status: Feedback Priority: Normal Assignee: Category: core Target version: current: 2.1.0 ruby -v: 1.9.3p448 Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN =begin By the (()), bitwise complement operator ((*~*)) to Fixnum instance should do ((*one's complement*)) with just flipping all bits. In fact, current implementation does ((*two's complement*)) due to or-ing with FIXNUM_FLAG, which is defined as 1. Either fix the documentation or the fix_rev function implementation. Affected versions: both 1.9.3 and 2.0.0 =end -- http://bugs.ruby-lang.org/