Implement NOT operator
Some checks failed
timw4mail/rusty-numbers/pipeline/head There was a failure building this commit
Some checks failed
timw4mail/rusty-numbers/pipeline/head There was a failure building this commit
This commit is contained in:
parent
f352c1aa4e
commit
437dcd34fb
@ -210,6 +210,23 @@ impl Neg for BigInt {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Not for BigInt {
|
||||||
|
type Output = Self;
|
||||||
|
|
||||||
|
fn not(self) -> Self::Output {
|
||||||
|
let mut flipped: Vec<usize> = Vec::with_capacity(self.inner.len());
|
||||||
|
|
||||||
|
for (i, val) in self.inner.iter().enumerate() {
|
||||||
|
flipped[i] = val.reverse_bits();
|
||||||
|
}
|
||||||
|
|
||||||
|
BigInt {
|
||||||
|
sign: self.sign,
|
||||||
|
inner: flipped,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
@ -237,6 +254,12 @@ mod tests {
|
|||||||
"least significant place should be MAX - 1"
|
"least significant place should be MAX - 1"
|
||||||
);
|
);
|
||||||
assert_eq!(sum.inner[1], 1usize, "most significant place should be 1");
|
assert_eq!(sum.inner[1], 1usize, "most significant place should be 1");
|
||||||
|
|
||||||
|
/* let a = BigInt::from(core::usize::MAX);
|
||||||
|
let b = BigInt::from(1usize);
|
||||||
|
let sum = a + b;
|
||||||
|
assert_eq!(sum.inner[0], 0usize);
|
||||||
|
assert_eq!(sum.inner[1], 1usize); */
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
Reference in New Issue
Block a user