5 ms·
"Understanding binary" on a basic level is different than being comfortable using bitshifting / bitwise operators.
by dwaltrip 5y ago
"Understanding binary" on a basic level is different than being comfortable using bitshifting / bitwise operators.
- AnIdiotOnTheNet 5y ago...not really? Bitwise operators can be explained in a couple minutes, tops, and follow naturally from another concept everyone working in computing should be familiar with: boolean logic.
- Zababa 5y agoThen why don't you spend that few minutes explaining the thing to the person you initially replied to, or link them to a resource instead of doing what you're currently doing?
- AnIdiotOnTheNet 5y agoBecause several other people already gave perfectly adequate direct responses. Mostly what I'm doing currently is defending my level of surprise.
- Zababa 5y agoThat's fair. A point that I didn't see mentionned is that what seems really easy for you may not be for others. I know about boolean logic, and bits, but I'm not comfortable with bitwise operation and they certainly don't seem obvious to me. On the other hand, I have coded with other people, and was really surprised that they didn't understand a certain thing (going from for loops to map for example). When you look at the number of programming languages and how different "idiomatic code" can be for the same task, I think it's a proof that different people think in a different way. For some low-level stuff will be very intuitive, for some it'll be functional programming, for others OO, etc. As some other people said, CS/SWE is very wide, it's hard to know everything at any point. Add to that that for most people working with high level software, knowing more about the business gives more leverage than learning more about CS fundamentals, you end up with people knowing widely different things. I think that in general, what's important is having a basic idea about most thing (known unknowns instead of unknown unknowns) so that you can look into stuff deeper if you need it.
- AnIdiotOnTheNet 5y ago> That's fair. A point that I didn't see mentionned is that what seems really easy for you may not be for others. I know about boolean logic, and bits, but I'm not comfortable with bitwise operation and they certainly don't seem obvious to me. ....how in the world can that be? Bitwise operations are just the application of boolean logic to each pair of bits in the arguments. If you know what "exclusive or" means, XOR should be perfectly comfortable to you no matter how many bits are involved.
- Zababa 5y agoXOR is fine, I understand how it works, though I often don't think about it in some leetcode-type exercise where a xor is the "clever" solution. Byteshift is not really intuitive to me, for example in the article, I wouldn't know if I had to shift left or right and would take a bit of time to look that up. As I said, different people think in a different way. I don't understand how people that can understand for loops don't understand map and filter, but I know that they exist.
- AnIdiotOnTheNet 5y agoThat's just wild to me. If I held up a card with a decimal number on it and asked you to remove the X least significant digits, would you have to look up which way to shift them?
- dwaltrip 5y agoUh yes, I’m an example of one. I’ve understood all of the operators at one point or another. I get the basic ideas. I’ve just barely used them so I would have to look them up before using them. I also don’t find the concept of bit-shifting to be that intuitive. Boolean logic is easy and a very necessary fundamental concept for all programming — I’m completely comfortable with that… For what it’s worth, I think most people consider me a competent software engineer. I have a degree in computational mathematics from a good school.
- wtallis 5y ago> I also don’t find the concept of bit-shifting to be that intuitive. Can you clarify what you mean by this? Because the concept of shifting bits to the left or right is so simple that I don't see how it could possibly strike you as unintuitive unless you are completely unfamiliar with the idea of data being represented by a string of contiguous binary digits. If your problem is merely that knowing what bit-shifting is does not present any obvious use cases to you, that isn't the same as finding the underlying concept unintuitive.
- dwaltrip 5y agoHmmm. I'll try. I guess the main issue is that I rarely ever deal with data in binary format. The times that I've dealt with binary strings has probably been most often as binary numbers in some sort of programming or math puzzle. Thinking of it as "multiplying" or "dividing" by a power of 2 feels more natural to me than "shifting" bits left or right. Maybe this is because I was a math major instead of CS :p If I had more experience with lower level languages and / or dealing with raw binary data formats, I probably would have internalized it better by now.
- CRConrad 5y ago> Bitwise operators ... follow naturally from another concept everyone working in computing should be familiar with: boolean logic. I'd say to most people raised on "ordinary" maths they follow more naturally from quite a different concept: Moving the decimal point.
- AnIdiotOnTheNet 5y agoThat only works for shifting, not the other bitwise operations.