diff --git a/bitwise.go b/bitwise.go new file mode 100644 index 0000000..ad43680 --- /dev/null +++ b/bitwise.go @@ -0,0 +1,32 @@ +package main + +// bitwiseComplimentOf returns the bitwise compliment of data +func bitwiseComplimentOf(data []byte) []byte { + compliment := []byte{} + + for i := range data { + compliment = append(compliment, ^data[i]) + } + + return compliment +} + +// isBitwiseCompliment returns true if data1 and data2 are bitwise compliments, +// otherwise it returns false +func isBitwiseCompliment(data1, data2 []byte) bool { + // if not same length, definitely not compliments + if len(data1) != len(data2) { + return false + } + + // check each byte + for i := range data1 { + // if any byte is NOT the bitwise compliment of the matching byte in other data + // set, then the full set is not bitwise compliment and false + if data1[i] != ^data2[i] { + return false + } + } + + return true +}