mptouv.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 50 行

C
50
字号
#include "os.h"#include <mp.h>#include "dat.h"#define VLDIGITS (sizeof(vlong)/sizeof(mpdigit))/* *  this code assumes that a vlong is an integral number of *  mpdigits long. */mpint*uvtomp(uvlong v, mpint *b){	int s;	if(b == nil)		b = mpnew(VLDIGITS*sizeof(mpdigit));	else		mpbits(b, VLDIGITS*sizeof(mpdigit));	mpassign(mpzero, b);	if(v == 0)		return b;	for(s = 0; s < VLDIGITS && v != 0; s++){		b->p[s] = v;		v >>= sizeof(mpdigit)*8;	}	b->top = s;	return b;}uvlongmptouv(mpint *b){	uvlong v;	int s;	if(b->top == 0)		return 0LL;	mpnorm(b);	if(b->top > VLDIGITS)		return MAXVLONG;	v = 0ULL;	for(s = 0; s < b->top; s++)		v |= (uvlong)b->p[s]<<(s*sizeof(mpdigit)*8);	return v;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?