コード例 #1
0
ファイル: code.c プロジェクト: dzavalishin/phantomuserland
int pvm_code_get_int32(struct pvm_code_handler *code)
{
    pvm_code_check_bounds( code, code->IP+int_size()-1, "get_int32" );
    int ret = pvm_code_do_get_int( code->code+code->IP );
    code->IP += int_size();
    return ret;
}
コード例 #2
0
ファイル: exercise06.c プロジェクト: dreamof2199/c_study
int positive_module ( int n)
{
	unsigned int int_size ( void );
	
	if ( n > 0)
		return n % int_size ();
	else
		return -n % int_size ();
}
コード例 #3
0
int bit_set(unsigned int x, int n)
{
	int j = int_size();
	unsigned int temp = 1 << (j - 1);
	temp = temp >> n;
	return (temp | x);
}
コード例 #4
0
ファイル: bitpat_get.c プロジェクト: hieast/PlayGround
unsigned int bitpat_get(unsigned int source, int begin, int len)
{
    unsigned int result = 0;
    for (int i = 0; i < len; i++){
        result <<= 1;
        result += bit_test(source, int_size () - arg_size (source) + begin + i);
    }
    return result;
    
}
コード例 #5
0
//function to calculate the min number of bits needed to represent a value
int numberOfBits(unsigned int x)
{
        int sizeOfInt = int_size();
        int counter = 0;
        unsigned int temp = 1 << (sizeOfInt - 1);
        while ( (temp | x) != x)
        {
                temp = temp >> 1;
                counter++;
        }

        return sizeOfInt - counter;
}
コード例 #6
0
ファイル: exercise06.c プロジェクト: dreamof2199/c_study
int bitpat_search( unsigned int source, unsigned int pattern, int n )
{
	unsigned int temp_pattern, temp_source,  loc;
	unsigned int int_size ( void );
	int positive_module ( int n);
	
	for ( loc = 0; loc <= int_size () - n; loc++ )
	{
		
	int j = 0, k = 0;
	temp_source = source;

	while ( j < n)
	{
		temp_source = bit_set ( temp_source, loc + j );
		j++;
	}

	temp_pattern =  pattern << ( int_size () - n - loc );
	while ( k < loc )
	{
		temp_pattern = bit_set ( temp_pattern, k );
		k++;
	}
	k = loc + n ;

	while ( k < int_size () )
	{
		temp_pattern = bit_set ( temp_pattern, k );
		k++;
	}
	
	printf ( "temp_pattern is %0x and temp_source is %0x and loc is %i\n", temp_pattern, temp_source, loc );
	if ( ( temp_pattern & temp_source ) == source)
		return loc;
	}

	return -1;
}
コード例 #7
0
ファイル: exercise06.c プロジェクト: dreamof2199/c_study
int bit_test ( unsigned int value, int n )
{
	unsigned int i = 1, size;

	unsigned int int_size ( void );
	size = int_size ();

	n %= size;
	i = ~ ( i << (31 - n) );

	if (value == ( value & i))
		return 0;
	else
		return 1;
}
コード例 #8
0
bool bit_test(unsigned int x, int n)
{
	/*algorithm:
	 *1. j = int_size()
	 *2.temp = 1 << j (left shift 1 j times to place bit on the left)
	 *3.temp = temp >> n
	 *3.temp & x == temp if n bit is set
	 */
	int j = int_size();
	unsigned int temp = 1 << (j - 1);
	temp = temp >> n;
	if ((temp & n) == temp) //nbit is set
		return true;
	else  
		return false;
}
コード例 #9
0
//extracts a specified set of bits from source starting at start
int bitpat_get(unsigned int source, int start, int n)
{
        unsigned int temp, nTempBits,nSourceBits,intSize, offset;

        intSize = int_size();
        nSourceBits = numberOfBits(source);

        temp = ~0;
        temp = temp >> (intSize - nSourceBits);
        temp = temp >> start;
        nTempBits = numberOfBits(temp);
        temp = temp & source;
        if (nTempBits >= n)
        {
                offset = nTempBits - n;
                temp = temp >> offset;
        }
コード例 #10
0
int main (void)
{
	unsigned int x, n;
	printf("Number of bits for u int : %i\n", int_size());	
	printf("Enter int x and bit number to test: ");
	scanf("%u %u", &x, &n);
	
	if (bit_test(x,n))
		printf("Bit %i is set on %i\n", n,x);
	else {
		printf("Bit %i is not set, setting...\n", n);
		x = bit_set(x,n);
		printf("New value of x: %i\n", x);
	}
	
	return 0;
}
コード例 #11
0
ファイル: 11.06.c プロジェクト: ceye1992/learn
int bitpat_search(unsigned int source, unsigned int pattern, int n)
{
    unsigned int num1;
    int m , count = 0;
    int int_size(void);

    m = int_size();

    num1 = pattern << (m - n);

    if(source == num1)
        return 0;

    while ((source & num1) != num1){
        source <<= 1;
        ++count;
        if(count > (m - n))
            return -1;
    }
    return count;
}
コード例 #12
0
ファイル: exercise06.c プロジェクト: dreamof2199/c_study
unsigned int bit_set ( unsigned int value, int n )
{
	unsigned int i = 1, size;

	unsigned int int_size ( void );
	size = int_size ();

	n %= size;
	i = ~ ( i << (31 - n) );

	int bit_test ( unsigned int value, int n );

	if ( bit_test ( value, n) )
	{
		return value;
	}
	else
	{
		return value + ~i;
	}
}