//=======================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"); }
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]; }
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; }
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)); }
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; }