私のCコードに少し問題がありました。符号、指数、仮数を抽出しようとしています。これまでのところ、符号と指数でうまくいきました。問題は仮数から始まります。たとえば、-5.0を見てみましょう。符号は1ビット、指数は8ビット、仮数は23ビットです。これは-5.0のバイナリ表記です:
1 10000001 0100000000000000000000
1 = 符号
10000001 = 指数
01000000000000000000000 = 仮数。
仮数のビットを戻したい。
static int fpmanitssa(uint32_t number) {
uint32_t numbTemp = 8388607;
number = number & numbTemp; //bitwise AND, number should be 2097152.
int numbDiv;
int leftover;
char resultString[23];
size_t idx = 0;
do {
numbDiv = number/2;
leftover = number % 2;
resultString[idx++] = leftover;
number = numbDiv;
} while (number != 0);
return resultString;
結果として得られるのは負の数です。なぜ機能しないのかわかりません。問題を見つけるのを手伝ってくれませんか?
よろしく萩