1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| double db_num;
int sign_bit;
String t = "0.001";
db_num = Double.parseDouble(t.toString());
/* FOR TEMPORARY */
sign_bit = (db_num > 0.0D) ? 0 : 1;
db_num = Math.abs(db_num);
double db_tmp = db_num;
int expo_cnt = 0;;
if ( db_num >= 1.0D) {
for (expo_cnt=1; (db_tmp=db_tmp/16.0D)>1.0D; expo_cnt++);
}
else {
for (expo_cnt=0; (db_tmp=db_tmp*16.0D)<1.0D; expo_cnt--);
db_tmp = db_tmp/16.0D;
}
int exponent = expo_cnt + 64; /* Excess-64 code */
//b = (byte)(sign_bit << 7) | (byte)(exponent & 0x0000007F);
byte b1 = (byte)(sign_bit << 7);
byte b2 = (byte)(exponent & 0x7F);
byte b3 = (byte)(b1 | b2);
write(b3);
String s = "";
byte b = 0;
for (int i=1; i<=56; i++) {
db_tmp = db_tmp*2.0D;
if (db_tmp >= 1.0D) {
db_tmp = db_tmp - 1.0D;
s = s + "1";
b = (byte)(b << 1);
b = (byte)(b | 0x1);
}
else {
s = s + "0";
b = (byte)(b << 1);
}
if (i % 8 == 0) { /* one byte */
write(b);
b = 0; |
Partager