На самом деле мне нужно преобразовать аргументы команды, которые представляют собой три строки, в битовое поле (три целых числа без знака внутри). Эта программа будет преобразовывать биты в числа с плавающей запятой. Сначала я подумал об использовании массива для хранения трех аргументов, но я действительно не знаю, как преобразовать массив в целое число без знака. Должен ли я просто использовать atoi, чтобы изменить arg на int, а затем непосредственно на unsigned int? Это не слово на моем компьютере. Понятия не имею.
Union32 getBits(char *sign, char *exp, char *frac)
{
Union32 new;
// this line is just to keep gcc happy
// delete it when you have implemented the function
//new.bits.sign = new.bits.exp = new.bits.frac = 0;
new.bits.sign = *(unsigned int *)atoi(sign);
new.bits.exp = *(unsigned int *)atoi(exp);
new.bits.frac = *(unsigned int *)atoi(frac);
//int i ;
//int balah[8] = {};
//for(i = 0; i < 8; i++){
//balah[i] = sign[i];
//}
//int j ;
//int bili[23] = {};
//for(j = 0; j < 23; j++){
//bili[j] = sign[j];
//}
//convert array into unsigned integer?
printf("%u %u %u\n", new.bits.sign, new.bits.exp, new.bits.frac);
// convert char *sign into a single bit in new.bits
// convert char *exp into an 8-bit value in new.bits
// convert char *frac into a 23-bit value in new.bits
enter code here
return new;
}
Ниже приведены подробности о typedef и union, которые необходимы в этой программе, а также о четырех функциях в этой программе.
typedef uint32_t Word;
struct _float {
// define bit_fields for sign, exp and frac
// obviously they need to be larger than 1-bit each
// and may need to be defined in a different order
unsigned int sign:1, exp:8, frac:23;
};
typedef struct _float Float32;
union _bits32 {
float fval; // interpret the bits as a float
Word xval; // interpret as a single 32-bit word
Float32 bits; // manipulate individual bits
};
typedef union _bits32 Union32;
void checkArgs(int, char **);
Union32 getBits(char *, char *, char *);
char *showBits(Word, char *);
int justBits(char *, int);
getBits просит нас преобразовать биты в числа с плавающей запятой, а showBits просит нас преобразовать числа с плавающей запятой в биты.
getBits
. Я думаю назвать это как:getBits("-1","+10","1.2349")
для представления числа -1.2349E+10, это правильно? - person Sir Jo Black   schedule 08.08.2018Union32
!? Вы не можете хранить отдельное значение вunion
, вы должны использоватьstruct
. - person Sir Jo Black   schedule 08.08.2018Union32
, чтобы понять открытые точки. - person Sir Jo Black   schedule 08.08.2018