Пример #1
0
//=======================here we go!========================================
main ()
{
//title
	printf("\n\n");
	printf("******CS 350 Lab 5 for %s  ******\n\n", "Weicheng Huang Section -01");  
	printf("\n\n");
//initial declare the varibles
	char opt[ARRAYLEN];
	int digits[ARRAYLEN];
	int origin;
        int value;
//begin the loop

	printf("Enter X (0 to stop):");
	scanf("%d", &origin);

	while(origin != 0){
	  printf("Type to shift?(a - arithmetic,l - logical):");
	  scanf("%s", opt);
	  value = origin;
          int times = 1;
	  print(origin,value,0);//the first time to output the shift
	  toBinary(origin,2,digits);
          for(times;times<32;times++){
		if(opt[0] == 'a'){
		  rshift_a(digits);
		  value = toDecimal(digits);
		  print(origin,value,times);
		}else if(opt[0] == 'l'){
		  rshift_l(digits);
		  value = toDecimal(digits);
		  print(origin,value,times);
		}else{
		  printf("You have input a wrong type of shift! Please input 'a' or 'l' again\n");
		}
	  }
	printf("Enter X (0 to stop):");//scan the input for next time use
	scanf("%d", &origin);
        }
//end the loop and thank the user
        printf("Thank you! see Ya!\n");	

}
Пример #2
0
void lw(bool registrylocation[8], bool memlocation[16]) {
	int index = 0;
	index = toDecimal(index, memlocation);
	registrylocation[0] = dataMemory[index];
	registrylocation[1] = dataMemory[index+1];
	registrylocation[2] = dataMemory[index+2];
	registrylocation[3] = dataMemory[index+3];
	registrylocation[4] = dataMemory[index+4];
	registrylocation[5] = dataMemory[index+5];
	registrylocation[6] = dataMemory[index+6];
	registrylocation[7] = dataMemory[index+7];
}
Пример #3
0
int main(int argc, char **argv)
{
	if (argc != 2)
	{
		printf("usage: %s %s\n", argv[0], "filename");
		return 0;
	}
	FILE *file = fopen(argv[1], "r");
	if (!file)
	{
		perror("Could not open file.\n");
		return 1;
	}
	char buffer[80];
	const int base = 16;
	while (fscanf(file, "%s", buffer) && !feof(file))
	{
		int len = 0;
		int dec = 0;

		int i;
		for (i = 0; buffer[i] != '\0'; i++)
		{
			len++;
		}
		int j;
		int k = len - 1;
		for (j = 0; j <= len - 1; j++, k--)
		{
			if (isdigit(buffer[j]))
			{
				int digit = buffer[j] - '0';
				dec += digit * pow(base, k);
			}
			else
			{
				int digit = toDecimal(buffer[j]);
				dec += digit * pow(base, k);
			}
		}
		printf("%d\n", dec);
	}
	fclose(file);
	return 0;
}
Пример #4
0
int main(int argc, char **argv)
{
  int decimal, number, len;
  char *result;

  if(argc != 3)
    {
      usage(argv[0]);
      return -1;
    }

  if(strSearch(argv[1]) == -1)
    {
      usage(argv[0]);
      return -1;
    }

  if(strSearch(argv[2]) == -1)
    {
      usage(argv[0]);
      return -1;
    }

  if(atoi(argv[1]) <= 1)
    {
      usage(argv[0]);
      return -1;
    }

  if(atoi(argv[1]) < 2 || atoi(argv[1]) > 36)
    {
      usage(argv[0]);
      return -1;
    }
     
  decimal = atoi(argv[1]);
  number = atoi(argv[2]);
  len = (int)(log(number) / log(decimal)) + 1;
  result = (char *)malloc(sizeof(char) * len);
  memset(result, '\0', len + 1);
  toDecimal(decimal, number, result, len);
  printf("%s\n", result);
  free(result);
  return 0;
}
/**
 *  Get a decimal value at a certain index
 *  @param  index
 *  @return double
 */
double Array::decimal(int index) const
{
    // get value
    return toDecimal(json_object_array_get_idx(_json, index));
}
Пример #6
0
int lookUpInSBox(int which, bool address[6], bool binaryOutcome[4]){
    int SBoxes[8][4][16] = {

                             /*S1*/

   { {14,  4,  13,  1,   2, 15,  11,  8,   3, 10,   6, 12,   5,  9,   0,  7},
     { 0, 15,   7,  4,  14,  2,  13,  1,  10,  6,  12, 11,   9,  5,   3,  8},
     { 4,  1,  14,  8,  13,  6,   2, 11,  15, 12,   9,  7,   3, 10,   5,  0},
     {15, 12,   8,  2,   4,  9,   1,  7,   5, 11,   3, 14,  10,  0,   6, 13}    },

                             /*S2*/

   { {15,  1,   8, 14,   6, 11,   3,  4,   9,  7,   2, 13,  12,  0,   5, 10,},
     { 3, 13,   4,  7,  15,  2,   8, 14,  12,  0,   1, 10,   6,  9,  11,  5,},
     { 0, 14,   7, 11,  10,  4,  13,  1,   5,  8,  12,  6,   9,  3,   2, 15,},
     {13,  8,  10,  1,   3, 15,   4,  2,  11,  6,   7, 12,   0,  5,  14,  9}    },

                             /*S3*/

   { {10,  0,   9, 14,   6,  3,  15,  5,   1, 13,  12,  7,  11,  4,   2,  8,},
     {13,  7,   0,  9,   3,  4,   6, 10,   2,  8,   5, 14,  12, 11,  15,  1,},
     {13,  6,   4,  9,   8, 15,   3,  0,  11,  1,   2, 12,   5, 10,  14,  7,},
     { 1, 10,  13,  0,   6,  9,   8,  7,   4, 15,  14,  3,  11,  5,   2, 12}     },

                             /*S4*/

   { { 7, 13,  14,  3,   0,  6,   9, 10,   1,  2,   8,  5,  11, 12,   4, 15,},
     {13,  8,  11,  5,   6, 15,   0,  3,   4,  7,   2, 12,   1, 10,  14,  9,},
     {10,  6,   9,  0,  12, 11,   7, 13,  15,  1,   3, 14,   5,  2,   8,  4,},
     { 3, 15,   0,  6,  10,  1,  13,  8,   9,  4,   5, 11,  12,  7,   2, 14}     },

                             /*S5*/

   { { 2, 12,   4,  1,   7, 10,  11,  6,   8,  5,   3, 15,  13,  0,  14,  9,},
     {14, 11,   2, 12,   4,  7,  13,  1,   5,  0,  15, 10,   3,  9,   8,  6,},
     { 4,  2,   1, 11,  10, 13,   7,  8,  15,  9,  12,  5,   6,  3,   0, 14,},
     {11,  8,  12,  7,   1, 14,   2, 13,   6, 15,   0,  9,  10,  4,   5,  3}     },

                             /*S6*/

   { {12,  1,  10, 15,   9,  2,   6,  8,   0, 13,   3,  4,  14,  7,   5, 11,},
     {10, 15,   4,  2,   7, 12,   9,  5,   6,  1,  13, 14,   0, 11,   3,  8,},
     { 9, 14,  15,  5,   2,  8,  12,  3,   7,  0,   4, 10,   1, 13,  11,  6,},
     { 4,  3,   2, 12,   9,  5,  15, 10,  11, 14,   1,  7,   6,  0,   8, 13}     },

                             /*S7*/

   { { 4, 11,   2, 14,  15,  0,   8, 13,   3, 12,   9,  7,   5, 10,   6,  1,},
     {13,  0,  11,  7,   4,  9,   1, 10,  14,  3,   5, 12,   2, 15,   8,  6,},
     { 1,  4,  11, 13,  12,  3,   7, 14,  10, 15,   6,  8,   0,  5,   9,  2,},
     { 6, 11,  13,  8,   1,  4,  10,  7,   9,  5,   0, 15,  14,  2,   3, 12}     },

                             /*S8*/

   { {13,  2,   8,  4,   6, 15,  11,  1,  10,  9,   3, 14,   5,  0,  12,  7,},
     { 1, 15,  13,  8,  10,  3,   7,  4,  12,  5,   6, 11,   0, 14,   9,  2,},
     { 7, 11,   4,  1,   9, 12,  14,  2,   0,  6,  10, 13,  15,  3,   5,  8,},
     { 2,  1,  14,  7,   4, 10,   8, 13,  15, 12,   9,  0,   3,  5,   6, 11}     }

                        };

    // row corresponds to the binary number consisting of the first and last index of address
    bool row[2];
    row[0] = address[0]; row[1] = address[5];

    // column corresponds to the middle 4 bits of address
    bool column[4];
    overwrite(column, address+1, 4);

    int number = SBoxes[which][toDecimal(row, 2)][toDecimal(column, 4)];

    // convert number to binary number saved in answer
    bool answer[4] = {0,0,0,0}; int numberNotOverwrite = number;
    int powOf2 = 8;
    for(int i = 0; i < 4; i++){
        if(numberNotOverwrite >= powOf2){
            answer[i] = 1;
            numberNotOverwrite -= powOf2;
        }

        powOf2/=2;
    }

    // copy answer to binaryOutcome
    overwrite(binaryOutcome, answer, 4);

    return number;

}