5 ms·
I was expecting to see "None of them" as kind of a joke. For a web app developer are these useful? For fun? yes. For profit? no. Title should be Low Level Bit
by notaddicted 17y ago
I was expecting to see "None of them" as kind of a joke.
For a web app developer are these useful? For fun? yes. For profit? no. Title should be Low Level Bit Hacks You May Find Interesting.
- jackowayed 17y agosame here! I was hoping it would just have the title and then be a blank page.
- paulgb 17y agoI assume the title was targeted at Peteris' normal audience, not web app developers. From the about: Peteris Krumins’ blog about programming, hacking, software reuse, software ideas, computer security, google and technology.
- notaddicted 17y agoThe purpose of the Hacker News website is to serve past/present/future ycombinator candidates. I'm not even a web app developer, I wrote C code for an $8 processor today. The title (as submitted by the author of the blog) says "Absolutely Must Know," which is quite hyperbolic. I would suggest: Basic tricks of bit manipulation. Consider that this topic is covered in K. N. King's book C Programming: A Modern Approach, in Chapter 20: Low-Level Programming, on page 451
- jf 17y agoYes, even for web applications, bitwise manipulation will come in handy at some point. Personal anecdote: I recently had to combine two arbitrary unsigned 32 bit integers into one unsigned 64 bit integer to make a unique ID for an index. Not sure how I would have done that without bitwise manipulation.
- notaddicted 17y agolol. in python: (2 ^ 32)*upper + lower edit: dbl star goes blank .. so in almost python
- tptacek 17y agoYou're XORing 32 into 2, multiplying it by the top word, and adding the bottom word? Also, you think exponentiation and multiplication is faster than a shift and an OR? I think you're the target audience for this article, and I revise my opinion (thankfully unstated) about whether this is material every developer "must" know.
- notaddicted 17y agoOkay okay ... I should have written: import math; math.pow(2,32) I tried to use the double star operator, but that is markup for italics in this software, so it was edited out.
- comatose_kid 17y agoSurprisingly (I just benchmarked it myself), the times are near the same. Here's my benchmark (in case I made a mistake): import time def combine(upper,lower): return (2**32)*upper + lower def combine2(upper,lower): return (upper << 32) | lower def test_combine(): start = time.clock() for i in range(10000000): combine(i,i) end = time.clock() output = 'The time taken for combine() is ' + str(end - start) print output def test_combine2(): start = time.clock() for i in range(10000000): combine2(i,i) end = time.clock() output = 'The time taken for combine() is ' + str(end - start) print output Also see http://wiki.python.org/moin/PythonSpeed/PerformanceTips#PythonisnotC http://wiki.python.org/moin/PythonSpeed/PerformanceTips#Pyth...
- tptacek 17y agoThat's surprising; it's more than twice as slow in Ruby (yeah, yeah). It's also (for obvious reasons) orders of magnitude faster in C --- if you were crazy enough to actually write code that way.
- ramchip 17y agoI don't know much about Python so forgive me if this is stupid - but could 2^32 have been optimized as a constant, so that the result is just a multiplication and an addition?
- noodle 17y agonot all of us here are (purely/originally) web app developers.
- CodeMage 17y agoMaybe I'm missing something... Why the assumption that all (or even the majority of) HN readers are interested only in developing web apps?
- strlen 17y agoHere's an example where a web developer may find bit=fiddling useful: - How would you, compactly and discretely, represent in a cookie the days on which a user has visited your site this month? (I am decided not a web developer, but this is a question I'd ask a web developer on a phone screen were I to hire one).