Git Product home page Git Product logo

Comments (3)

mkruskal-google avatar mkruskal-google commented on June 28, 2024

@Logofile Do you have context on why this was changed?

The old version (~ 1 year ago) was correct:
(n << 1) ^ (n >> 31) for sint32
(n << 1) ^ (n >> 63) for sint64

This more closely matched our code as well

from protocolbuffers.github.io.

mkruskal-google avatar mkruskal-google commented on June 28, 2024

I think what we want is (n + n) ^ (n < 0), which is easy to prove is equivalent to the above formula (but more compact)

from protocolbuffers.github.io.

mkruskal-google avatar mkruskal-google commented on June 28, 2024

Nvm, your version is correct. Because of the right-shift behavior of signed integers we need the - like you found: (n+n) ^ -(n < 0). I think it's best to just use the version we have in the code though to make it more maintainable though

from protocolbuffers.github.io.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.