mirror of
https://github.com/vlang/v.git
synced 2025-09-17 03:17:25 -04:00
math.big: add new .bitwise_com/0 method + tests (#24476)
This commit is contained in:
parent
1957162c2a
commit
861adfcc65
@ -813,6 +813,12 @@ fn test_bitwise_ops() {
|
||||
assert b.bitwise_or(b) == b
|
||||
assert b.bitwise_and(b) == b
|
||||
assert b.bitwise_not() == big.zero_int
|
||||
assert big.three_int.neg().bitwise_com() == big.two_int
|
||||
assert big.two_int.neg().bitwise_com() == big.one_int
|
||||
assert big.one_int.neg().bitwise_com() == big.zero_int
|
||||
assert big.zero_int.bitwise_com() == big.one_int.neg()
|
||||
assert big.one_int.bitwise_com() == big.two_int.neg()
|
||||
assert big.two_int.bitwise_com() == big.three_int.neg()
|
||||
}
|
||||
|
||||
fn test_get_bit() {
|
||||
|
@ -743,6 +743,17 @@ pub fn (a Integer) bitwise_not() Integer {
|
||||
}
|
||||
}
|
||||
|
||||
// bitwise_com returns "bitwise complement" of integer `a`.
|
||||
//
|
||||
// Note: this function consider the sign of the input.
|
||||
pub fn (a Integer) bitwise_com() Integer {
|
||||
return if a.signum == -1 {
|
||||
a.abs() - one_int
|
||||
} else {
|
||||
(a + one_int).neg()
|
||||
}
|
||||
}
|
||||
|
||||
// bitwise_xor returns the "bitwise exclusive or" of the integers `|a|` and `|b|`.
|
||||
//
|
||||
// Note: both operands are treated as absolute values.
|
||||
|
Loading…
x
Reference in New Issue
Block a user