本文簡要介紹rust語言中 usize.carrying_mul
的用法。
用法
pub fn carrying_mul(self, rhs: usize, carry: usize) -> (usize, usize)
計算“full multiplication” self * rhs + carry
而不會溢出。
這會將結果的低位(包裝)位和high-order(溢出)位按順序作為兩個單獨的值返回。
執行“long multiplication”,它接受額外的添加量,並可能返回額外的溢出量。這允許將多個乘法鏈接在一起以創建表示較大值的“big integers”。
例子
基本用法:
請注意,此示例在整數類型之間共享。這就解釋了為什麽在這裏使用u32
。
#![feature(bigint_helper_methods)]
assert_eq!(5u32.carrying_mul(2, 0), (10, 0));
assert_eq!(5u32.carrying_mul(2, 10), (20, 0));
assert_eq!(1_000_000_000u32.carrying_mul(10, 0), (1410065408, 2));
assert_eq!(1_000_000_000u32.carrying_mul(10, 10), (1410065418, 2));
assert_eq!(usize::MAX.carrying_mul(usize::MAX, usize::MAX), (0, usize::MAX));
如果 carry
為零,這類似於 overflowing_mul
,隻是它給出了溢出的值,而不僅僅是是否發生了溢出:
#![feature(bigint_helper_methods)]
let r = u8::carrying_mul(7, 13, 0);
assert_eq!((r.0, r.1 != 0), u8::overflowing_mul(7, 13));
let r = u8::carrying_mul(13, 42, 0);
assert_eq!((r.0, r.1 != 0), u8::overflowing_mul(13, 42));
返回的元組中第一個字段的值與您通過組合 wrapping_mul
和 wrapping_add
方法獲得的值相匹配:
#![feature(bigint_helper_methods)]
assert_eq!(
789_u16.carrying_mul(456, 123).0,
789_u16.wrapping_mul(456).wrapping_add(123),
);
相關用法
- Rust usize.carrying_add用法及代碼示例
- Rust usize.checked_div用法及代碼示例
- Rust usize.checked_shl用法及代碼示例
- Rust usize.checked_shr用法及代碼示例
- Rust usize.checked_add用法及代碼示例
- Rust usize.count_ones用法及代碼示例
- Rust usize.checked_div_euclid用法及代碼示例
- Rust usize.checked_pow用法及代碼示例
- Rust usize.checked_sub用法及代碼示例
- Rust usize.checked_mul用法及代碼示例
- Rust usize.checked_neg用法及代碼示例
- Rust usize.checked_log2用法及代碼示例
- Rust usize.checked_next_multiple_of用法及代碼示例
- Rust usize.count_zeros用法及代碼示例
- Rust usize.checked_add_signed用法及代碼示例
- Rust usize.checked_log用法及代碼示例
- Rust usize.checked_next_power_of_two用法及代碼示例
- Rust usize.checked_log10用法及代碼示例
- Rust usize.checked_rem_euclid用法及代碼示例
- Rust usize.checked_rem用法及代碼示例
- Rust usize.wrapping_mul用法及代碼示例
- Rust usize.wrapping_neg用法及代碼示例
- Rust usize.saturating_pow用法及代碼示例
- Rust usize.overflowing_shl用法及代碼示例
- Rust usize.to_ne_bytes用法及代碼示例
注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 usize.carrying_mul。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。