c语言中,实数的小数部分怎样储存在内存中的?乘二取余,怎样取?

如题所述

可以用fload.
你这个问题我的理解是这样的.
1.对任意一个数,乘二就表示转成2进制后左移一位,除二表示转成2进制后右移一位。我假设你明白这个。
2.对十进制数%10得到它的个位。对二进制数%2得到它的个位。我假设这个你也能想明白。

比如0.101(2进制的),左移一格就变成了1.01,这时%2得1(另一种情况是得0)。所以不停的左移不停的把%2得到的数放到int里就行了,就得到这个数的小数部分了。当然输出要从高位往低位输出。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-25
c语言中小数部分可以为float &double型的数据,在内存中的存贮不是简单int型的存储结构,而是分成很多部分,每一部分都有它固定的意思,不能这么随便乘二来进行 移位操作

c语言中,实数的小数部分怎样储存在内存中的?乘二取余,怎样取?
乘以2,然后,取整数部分 比如0.56 0.56X2=1.12 0.12X2=0.24 0.24X2=0.48 0.48X2=0.96 0.96X2=1.92 0.92X2=1.84 ...0.56=0.100011...

c数值变量中 小数点两边是不是一定要是有数的?
(3)%m.ns输出m列,但只取左端n个字符。这n个字符输出在m列的右侧即右对齐,左端补空格。(4)%-m.ns同上,只是左对齐,右端补空格。格式字符f:(1)%f,系统自动使整数部分全部输出,并输出6位小数。要注意输出单精度实数时,只有前7位是有效位,double为前16位有效;(2)%m.nf,输出数据共...

C语言中常量在内存中的存储形式怎么表示
1、整数是以补码的形式转换为二进制代码存储在计算机中。实数是以IEEE754标准转换为二进制代码存储在计算机中。字符本质实际也与整数的存储方式相同(先通过ASCII码把字符转换为对应的整数,再按整数以补码形式转换为二进制)。2、char型常量(字符),在计算机中是按其ASCII值进行存储,ASCII是"整型类"数...

C语言,从键盘上输入两个实数,计算并输入它们的和,差,积,商,(结果均保 ...
i2 = (int)f2;printf("整数取余为:%d\\n",i1 % i2);return 0;}

c语言问题???
C语言中,变量分为全局变量和局部变量;也可以这样分:自动变量,静态变量.前者是按变量作用范围来分的,而后者是按变量存储方式来分的. 如果按存储占用空间来分,可以是整型变量,字符型变量,浮点型变量等.当然还有数组,结构体变量等. C语言还有一个重要变量:指针变量.它存放的值是一个内存地址.操作系统变量 C语言中...

c语言 怎么保存一个实数的整数部分 怎么判断sqrt(x) 是否为整数 类型转 ...
用个变量来保存撒,判断sqrt(x)是否为整数,你先把他保存在n变量中,然后n对1取余,如果取余后的结果为0,则为整数,否则非整数。

C语言关于取余%的一些疑问,带小数可以取余吗?
在C语言中,取余操作%仅支持两个整型进行计算。所以不会存在12345.6 % 10的,编译器会报错的。那为什么按照这样的算法可以显示6位数字呢?是因为在C语言中,整型间的 \/,表示的是求商运算,而不是实数的除法,也就是说,在C语言中,3 \/ 2 = 1 而不是1.5。所以123456 \/ 10 = 12345而不是...

小数变二进制储存方式
一般情况下的十进制小数,是不能准确转换为二进制小数的。所以,计算机中保存普通的实数,是存在误差的。只能取到一定程序的近似值。例如,把11.234转换为二进制:整数转换,采用除2反向取余法:11\/2=5...1 5\/2=2...1 2\/2=1...0 1\/2=0...1 从下往上读取每一次的余数,就是转换的结果...

C语言中 哪些运算符不能作用于浮点数
~ 按位取反运算符 不可以,位运算符只能是整数 sizeof 长度运算符 可以 \/ 除 可以 乘 可以 余数(取模) 不可以,取余数只对整数才有意义 + 加 可以 - 减 可以 其他判断运算符 > < == 可以 逻辑运算符 可以 ...

c语言中math.h都有些什么函数?
8. 取整与取余 modf和fmod函数分别用于将实数分解为整数部分和小数部分,以及计算两个数相除的余数。9. 其他 hypot函数用于计算直角三角形的斜边长度,而poly函数则用于计算多项式的值。matherr函数提供了一种处理数学运算中可能发生的错误的方式。这些函数极大地丰富了C语言的数学计算能力,使程序能够处理...

相似回答