我有一个由2个64位整数组成的元组( int128 ):
struct int128 {
uint64_t left;
int64_t right;
};我知道如何做乘法、加法和减法等基本算术,但我不知道如何用C打印当前有符号的值。
有人能告诉我怎么做吗?
发布于 2021-03-29 18:54:37
假设您具有以下功能:
int64_t divideRem(struct int128 *number, int64_t divisor);它将数字/除数除法,将除法结果设置为number,并返回除法的其余部分。
您可以使用递归实现:
printInt128rec(struct int128 *number) {
int64_t rem;
rem = divideRem(number, 10);
if( cmpInt128(number, 0) != 0 ) { /* compares number with 0 */
printInt128rec(number);
}
printf("%d", rem);
}您的主要打印函数应该复制数字以避免修改,并检查底片:
printInt128(struct int128 *number) {
struct int128 copy = *number;
if( cmpInt128(©, 0) < 0 ) { /* number is negative */
printf("-");
becomePositive(©); /* copy = abs (number ) */
}
printInt128rec(©);
}现在你可以打电话给printInt128打印你的号码了。注意,我使用了几个在int128整数和int64之间操作的其他函数。如果你知道如何做128位的算术,这些应该更容易实现。
https://stackoverflow.com/questions/66825998
复制相似问题