qbitbits.c

来自「在Linxu程序设计当中」· C语言 代码 · 共 73 行

C
73
字号
#include "f2c.h"#ifdef __cplusplusextern "C" {#endif#ifndef LONGBITS#define LONGBITS 32#endif#ifndef LONG8BITS#define LONG8BITS (2*LONGBITS)#endif longint#ifdef KR_headersqbit_bits(a, b, len) longint a; integer b, len;#elseqbit_bits(longint a, integer b, integer len)#endif{	/* Assume 2's complement arithmetic */	ulongint x, y;	x = (ulongint) a;	y = (ulongint)-1L;	x >>= b;	y <<= len;	return (longint)(x & ~y);	} longint#ifdef KR_headersqbit_cshift(a, b, len) longint a; integer b, len;#elseqbit_cshift(longint a, integer b, integer len)#endif{	ulongint x, y, z;	x = (ulongint)a;	if (len <= 0) {		if (len == 0)			return 0;		goto full_len;		}	if (len >= LONG8BITS) { full_len:		if (b >= 0) {			b %= LONG8BITS;			return (longint)(x << b | x >> LONG8BITS - b );			}		b = -b;		b %= LONG8BITS;		return (longint)(x << LONG8BITS - b | x >> b);		}	y = z = (unsigned long)-1;	y <<= len;	z &= ~y;	y &= x;	x &= z;	if (b >= 0) {		b %= len;		return (longint)(y | z & (x << b | x >> len - b));		}	b = -b;	b %= len;	return (longint)(y | z & (x >> b | x << len - b));	}#ifdef __cplusplus}#endif

⌨️ 快捷键说明

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