lbitbits.c

来自「gcc-2.95.3 Linux下最常用的C编译器」· C语言 代码 · 共 63 行

C
63
字号
#include "f2c.h"#ifndef LONGBITS#define LONGBITS 32#endif integer#ifdef KR_headerslbit_bits(a, b, len) integer a, b, len;#elselbit_bits(integer a, integer b, integer len)#endif{	/* Assume 2's complement arithmetic */	unsigned long x, y;	x = (unsigned long) a;	y = (unsigned long)-1L;	x >>= b;	y <<= len;	return (integer)(x & ~y);	} integer#ifdef KR_headerslbit_cshift(a, b, len) integer a, b, len;#elselbit_cshift(integer a, integer b, integer len)#endif{	unsigned long x, y, z;	x = (unsigned long)a;	if (len <= 0) {		if (len == 0)			return 0;		goto full_len;		}	if (len >= LONGBITS) { full_len:		if (b >= 0) {			b %= LONGBITS;			return (integer)(x << b | x >> LONGBITS -b );			}		b = -b;		b %= LONGBITS;		return (integer)(x << LONGBITS - b | x >> b);		}	y = z = (unsigned long)-1;	y <<= len;	z &= ~y;	y &= x;	x &= z;	if (b >= 0) {		b %= len;		return (integer)(y | z & (x << b | x >> len - b));		}	b = -b;	b %= len;	return (integer)(y | z & (x >> b | x << len - b));	}

⌨️ 快捷键说明

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