當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust usize.carrying_add用法及代碼示例


本文簡要介紹rust語言中 usize.carrying_add 的用法。

用法

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

計算 self + rhs + carry 而不會溢出。

執行“ternary addition”,它接受一個額外的位來添加,並且可能返回一個額外的溢出位。這允許將多個添加鏈接在一起以創建表示較大值的“big integers”。

在電子學意義上,這可以被認為是 64 位 “full adder”。

例子

基本用法

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

如果 carry 為 false,則此方法等效於 overflowing_add

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

相關用法


注:本文由純淨天空篩選整理自rust-lang.org大神的英文原創作品 usize.carrying_add。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。