nrm_ext.c

来自「操作系统源代码」· C语言 代码 · 共 51 行

C
51
字号
/*  (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.  See the copyright notice in the ACK home directory, in the file "Copyright".*//* $Header: nrm_ext.c,v 1.5 93/01/05 12:06:11 ceriel Exp $ *//********************************************************//*	NORMALIZE an EXTENDED FORMAT NUMBER*//********************************************************/#include "FP_shift.h"#include "FP_types.h"voidnrm_ext(e1)EXTEND	*e1;{		/* we assume that the mantissa != 0	*/		/* if it is then just return		*/		/* to let it be a problem elsewhere	*/		/* THAT IS, The exponent is not set to	*/		/* zero. If we don't test here an	*/		/* infinite loop is generated when	*/		/* mantissa is zero			*/	if ((e1->m1 | e1->m2) == 0L)		return;		/* if top word is zero mov low word	*/		/* to top word, adjust exponent value	*/	if (e1->m1 == 0L)	{		e1->m1 = e1->m2;		e1->m2 = 0L;		e1->exp -= 32;	}	if ((e1->m1 & NORMBIT) == 0) {		unsigned long l = ((unsigned long)NORMBIT >> 1);		int cnt = -1;		while (! (l & e1->m1)) {			l >>= 1;			cnt--;		}		e1->exp += cnt;		b64_sft(&(e1->mantissa), cnt);	}}

⌨️ 快捷键说明

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