Can you think of an use case for ^x?

February 6, 2024

Last week I talked about unary integer operators, including the ^ operator. A reader wrote back asking:

Can you think of an use case for ^x?

So today I’m going to answer this question!

No!

LOL

Not very satisfying, is it?

So I did some digging to find some examples. Note, none of these are my own examples. This is something most of us will never use. But it’s a good question nonetheless. So here are some real-world places I found it being used:

  • Here’s an example from github.com/golang/protobuf, where according to comments, it’s used for C++ compatibility:

    // The C++ parser accepts large positive hex numbers that uses
    // two's complement arithmetic to represent negative numbers.
    // This feature is here for backwards compatibility with C++.
    if strings.HasPrefix(tok.value, "0x") {
    	if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
    		return protoreflect.ValueOfInt32(int32(-(int64(^x) + 1))), nil
    	}
    }
    
  • Here’s an example from a gameboy emulator:

    func (cpu *CPU) resetBit(bit uint8, reg RWByte) {
    	mask := ^uint8(1 << bit)
    	value := reg.Read()
    
    	reg.Write(value & mask)
    }
    

I also found references to a few other examples, mostly related to low-level protocol work, but didn’t find code examples to share.


Share this

Direct to your inbox, daily. I respect your privacy .

Unsure? Browse the archive .