Y
Hacker News
new
|
ask
|
show
|
jobs
by
mcintyre1994
3412 days ago
Imagine you only had 4 bit numbers (range 0-15) and you tried to do swap 14, 15 (1110, 1111). You can do that with xor but not with the add method, because you can't store a + b without a wider variable.
1 comments
jonsen
3412 days ago
15 + 15 gives 14
14 - 15 gives 15
link
mcintyre1994
3412 days ago
The way I wrote this was rubbish, edited. I was trying to get at if you have 1110, 1111 then 1110 + 1111 will overflow, but you could xor them.
link
jonsen
3412 days ago
1110 + 1111 = 1101 1101 - 1110 = 1111 1101 - 1111 = 1110
Overflow doesn't matter if you just want to swap.
link
Sacho
3412 days ago
(Assuming two's complement arithmetic, as amelius pointed out - I don't know if all programming languages and platforms use it)
link
mcintyre1994
3412 days ago
That's a really smart observation I hadn't made, thanks for explaining!
link
14 - 15 gives 15