Ver código fonte

finish quiz8

master
吴冕志 1 ano atrás
pai
commit
1a32e3302f
1 arquivos alterados com 9 adições e 2 exclusões
  1. +9
    -2
      lab2/datalab-handout/bits.c

+ 9
- 2
lab2/datalab-handout/bits.c Ver arquivo

@ -259,7 +259,7 @@ int isLessOrEqual(int x, int y) {
int absy = y & sign1; int absy = y & sign1;
int diff = absy + (~absx) + 1; int diff = absy + (~absx) + 1;
int signdiff = diff >> 31; int signdiff = diff >> 31;
int res = !!isnegpos | (!isnegpos & !signdiff & !isposneg);
int res = !(!isnegpos) | (!isnegpos & !signdiff & !isposneg);
return res; return res;
} }
//4 //4
@ -272,7 +272,14 @@ int isLessOrEqual(int x, int y) {
* Rating: 4 * Rating: 4
*/ */
int logicalNeg(int x) { int logicalNeg(int x) {
return 2;
int sign = (x ^ (~x + 1)) >> 31;
int one = 1;
int singlesign = sign & one;
int intmin = 1 << 31;
int isnotmin = (~x) >> 31; // if x is 00000, get 1111 and if x is 1000 get 00000
int notmin = isnotmin & one;
int res = singlesign ^ one & notmin;
return res;
} }
/* howManyBits - return the minimum number of bits required to represent x in /* howManyBits - return the minimum number of bits required to represent x in
* two's complement * two's complement

Carregando…
Cancelar
Salvar