①用逻辑与运算、逻辑左移
#include#include #define M 1e-8 void main(void) { int i, j = 0, m = 0 ; double n ; printf("请输入一个十进制实数:n") ; scanf("%lf", &n) ; while (n > 1) { m++ ; n -= 1 ; } for (i = 0 ; i < 32 ; i++) { if ((m & 0x80000000) == 0x80000000) { printf("1") ; j = 1 ; } else { if (j == 1) printf("0") ; } m = m << 1 ; } printf(".") ; while (n > M) { n *= 2 ; if (n >= 1) { printf("1") ; n -= 1 ; } else printf("0") ; } }
②用数组(用字符数组类似加个’0’就行了)
#include#include #define N 33 #define M 1e-8 void main(void) { int a[N], i = 0, j, m = 0 ; double n ; printf("请输入一个十进制实数:n") ; scanf("%lf", &n) ; while (n > 1) { m++ ; n -= 1 ; } while (m != 0) { a[i++] = m%2 ; m /= 2 ; } for (int j = i-1 ; j >= 0 ; j--) printf("%d", a[j]) ; printf(".") ; while (n > M) { n *= 2 ; if (n >= 1) { printf("1") ; n -= 1 ; } else printf("0") ; } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)