int main(void) {
   uint64 x = 0xface0000cafe0000LL;
   uint64 y = swap_bits(x, 3, 59); 
   uint64 z = swap_bits(y, 3, 59); 

   printf("%llX\n%llX\n%llX\n",  x, y, z);
   std::cout << std::hex << x << std::endl; 
   std::cout << std::hex << y << std::endl; 
   std::cout << std::hex << z << std::endl; 

   std::cout << divide_x_y(4097, 2) << std::endl;

   // 6.2: O(1) initialize an array.
   Array<int, 8> arr;
   arr.write(7, 70);   
   arr.write(4, 400);   
   arr.write(5, 500);   
   arr.write(2, 200);   
   arr.write(1, 100);   
   arr.write(0, 20);   
   arr.write(3, 30);   
   arr.write(6, 60);   
   std::cout << std::endl;
   for (int i = 0; i < 8; i++) {
       int v = 0;
       if (arr.read(i, v))
         std::cout << v << " ";
   }
   std::cout << std::endl;
   for (int i = 0; i < 8; i++) {
       arr.write(i, i);   
   }
   for (int i = 0; i < 8; i++) {
       int v = 0;
       if (arr.read(i, v))
         std::cout << v << " ";
   }
   std::cout << std::endl;
   arr.print();

   //                    0  1  2  3  4  5  6  7  8  9 10
   std::vector<int> A = {1, 2, 3, 4, 1, 2, 3, 4, 7, 1, 2};
   auto ans = find_longest_increasing_subarray<int>(A);
   std::cout << ans.first << " " << ans.second << std::endl;
   return 0;
}
Пример #2
0
int main(){
    int num,p1,p2,n;
    printf("Enter the number n :");
    scanf("%d",&num);
    printf("Enter position and number of bits to swapped :");
    scanf("%d%d%d",&p1,&p2,&n);
    printf("Number after swapping bits :%d\n",swap_bits(num,p1,p2,n));
    return 0;
}
Пример #3
0
int main(int argc, char * argv[]) {
    bool pass = true;

    pass = pass
        && (swap_bits(0) == 0)
        && (swap_bits(1) == 2)
        && (swap_bits(2) == 1)
        && (swap_bits(3) == 3)
        && (swap_bits(0x55555555) == 0xAAAAAAAA)
        && (swap_bits(0xAAAAAAAA) == 0x55555555)
        && (swap_bits(0xC0000000) == 0xC0000000)
        && (swap_bits(0x40000000) == 0x80000000)
        && (swap_bits(0x80000000) == 0x40000000)
        ;

    return (pass ? 0 : -1);
}
Пример #4
0
// Tests the bit algorithms
void test_bit_algo()
{
      // Test sign of
      assert(sign_of_int(-10) == -1 && sign_of_int(10) == 0);
      assert(sign_of_int_ec(-10) == -1 && sign_of_int_ec(10) == 0);
      // Test opposite_sign
      assert(opposite_sign(1,-1) == 1 && opposite_sign(-1,-1) == 0 &&
            opposite_sign(1,1) == 0);
      // Test absolute number
      assert(abs_of_int(-10) == abs_of_int(10));
      // Test min of
      assert(min_of(1,2) == 1 && min_of(2,1) == 1);
      // Test min of 3
      assert(min_of3(1,2,3) == 1 && min_of3(3,2,1) == 1);
      // Test is power of 2
      assert(is_power_of2(1024) && !is_power_of2(1023));
      // Test next power of two
      assert(next_power_of2(2000) == 2048 && next_power_of2(2049) == 4096);
      // Test swap bits
      assert(swap_bits(42) == 21 && swap_bits(21) == 10);
      // Test count bits
}
Пример #5
0
bool main()
{
	srand(time(NULL));
	int number, newnumber, i, j;
	i = rand() % 31;
	j = rand() % 31;
	number = rand();

	// i = 0;
	// j = 31;
	// number = (1 << 31) + 1;
	
	if (i == j)
	{
		printf("i and j are equal, quitting...");
		return false;
	}
	
	printf("Swapping bits %d and %d (zero indexed) in 0x%x\n", i, j, number);
	newnumber = swap_bits(number, i, j);
	printf("0x%x\n", newnumber);
}
Пример #6
0
/*
 * @brief	Driver function
 */
int main(int argc, char *argv[])
{
	int res = swap_bits(NUM, 1, 5, 3);
	printf("Result: %d\n", res);
	return 0;
}