File tree Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -813,6 +813,12 @@ fn test_bitwise_ops() {
813
813
assert b.bitwise_or (b) == b
814
814
assert b.bitwise_and (b) == b
815
815
assert b.bitwise_not () == big.zero_int
816
+ assert big.three_int.neg ().bitwise_com () == big.two_int
817
+ assert big.two_int.neg ().bitwise_com () == big.one_int
818
+ assert big.one_int.neg ().bitwise_com () == big.zero_int
819
+ assert big.zero_int.bitwise_com () == big.one_int.neg ()
820
+ assert big.one_int.bitwise_com () == big.two_int.neg ()
821
+ assert big.two_int.bitwise_com () == big.three_int.neg ()
816
822
}
817
823
818
824
fn test_get_bit () {
Original file line number Diff line number Diff line change @@ -743,6 +743,17 @@ pub fn (a Integer) bitwise_not() Integer {
743
743
}
744
744
}
745
745
746
+ // bitwise_com returns "bitwise complement" of integer `a`.
747
+ //
748
+ // Note: this function consider the sign of the input.
749
+ pub fn (a Integer) bitwise_com () Integer {
750
+ return if a.signum == - 1 {
751
+ a.abs () - one_int
752
+ } else {
753
+ (a + one_int).neg ()
754
+ }
755
+ }
756
+
746
757
// bitwise_xor returns the "bitwise exclusive or" of the integers `|a|` and `|b|`.
747
758
//
748
759
// Note: both operands are treated as absolute values.
You can’t perform that action at this time.
0 commit comments