当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust u32.carrying_add用法及代码示例


本文简要介绍rust语言中 u32.carrying_add 的用法。

用法

pub fn carrying_add(self, rhs: u32, carry: bool) -> (u32, bool)

计算 self + rhs + carry 而不会溢出。

执行“ternary addition”,它接受一个额外的位来添加,并且可能返回一个额外的溢出位。这允许将多个添加链接在一起以创建表示较大值的“big integers”。

在电子学意义上,这可以被认为是一个 32 位的“full adder”。

例子

基本用法

#![feature(bigint_helper_methods)]
assert_eq!(5u32.carrying_add(2, false), (7, false));
assert_eq!(5u32.carrying_add(2, true), (8, false));
assert_eq!(u32::MAX.carrying_add(1, false), (0, true));
assert_eq!(u32::MAX.carrying_add(0, true), (0, true));
assert_eq!(u32::MAX.carrying_add(1, true), (1, true));
assert_eq!(u32::MAX.carrying_add(u32::MAX, true), (u32::MAX, true));

如果 carry 为 false,则此方法等效于 overflowing_add

#![feature(bigint_helper_methods)]
assert_eq!(5_u32.carrying_add(2, false), 5_u32.overflowing_add(2));
assert_eq!(u32::MAX.carrying_add(1, false), u32::MAX.overflowing_add(1));

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 u32.carrying_add。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。