CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

这样的除法,如何实现

楼主liulibo11119(跑)2005-09-21 23:50:10 在 C/C++ / C语言 提问

4字节无符号整数,表示,盘的存储容量,大于1MB,显示XXX.XXX   MB,大于1KB乎   显示XXX.XXX   KB  
  小于1K,显示     XXXX.XXX   By  
   
  n/1024.0  
  是不是比   n/1024,  
  要耗时很多,  
  如果很多,则不用     n/1024.0     实现  
     
  另   用     sprintf(s,   "%d.%d   MB"   n/(1024*1024),   (n%(1024*1024))/1024);  
  求出的值与用   n/(1024*1024*0.1)  
  有很大出入,  
  问题点数:50、回复次数:8Top

1 楼jamesfancy(▲) 边城狂人 <Java|C++] (★)回复于 2005-09-22 00:13:49 得分 10

另   用     sprintf(s,   "%d.%d   MB"   n/(1024*1024),   (n%(1024*1024))/1024);  
  求出的值与用   n/(1024*1024*0.1)  
   
  当然会有很大的出入了  
  n   /   (1024   *   1024)   与   n   /   (1024   *   1024   *   0.1)   就是十倍之差  
  n   %   (1024   *   1024)   /   1024   是将余数除以   1024,不知道你是何用意。Top

2 楼K()回复于 2005-09-22 00:15:40 得分 5

判断一下N的大小。  
  if   (n<1024)  
          bytes;  
  else  
  if   (n<1024*1024)  
          KB;  
  else  
        MB;  
  sprintf(s,   "%d.%d   MB"   n/(1024*1024),   (n%(1024*1024))/1024);  
   
  n%(1024*1024)/1024这里会取整的,你直接除就可以了。  
   
  float   ratio=n/1024.0/1024.0;  
   
   
   
  Top

3 楼zhouhuahai(道号"虚无")回复于 2005-09-22 09:16:35 得分 10

4字节无符号整数,表示,盘的存储容量,大于1MB,显示XXX.XXX   MB,大于1KB乎   显示XXX.XXX   KB  
  小于1K,显示     XXXX.XXX   By  
   
  用移位操作比除法快得多(虽然有很多除法在内部会转化成移位):  
  除以1024就是右移10位.......Top

4 楼fjm_520(蓝)回复于 2005-09-22 09:27:55 得分 10

楼上说中要害Top

5 楼deping_chen(小平)回复于 2005-09-22 10:16:45 得分 5

printf("%dM,   %dK,   %dB",   n>>20,   (n&0xFFFFF)>>10,   (n&0x3FF));Top

6 楼liulibo11119(跑)回复于 2005-09-22 15:39:43 得分 0

谢谢各位,已实现了  
   
  void   mmi_mydata_utils_convertToStrSize(const   U32   ulSize,   char   *spStr)  
  {  
          U32   n1   =   0;  
          U32   n2   =   0;  
          if(NULL   ==   spStr)  
          {  
                  return;  
          }  
           
          if(MMI_MYDATA_SIZE_M_BYTE   <=   ulSize)  
          {  
                  n1   =   ulSize>>20;   /*The   same   as   ulSize/MMI_MYDATA_SIZE_M_BYTE*/;  
                  n2   =   ulSize&0x000FFFFF;   /*The   same   as     ulSize%MMI_MYDATA_SIZE_M_BYTE;*/  
                  n2   *=   100;  
                  n2   >>=   20;  
                   
                  sprintf(spStr,   "%d.%d%d   MB",   n1,   n2/10,   n2%10);  
          }  
          else   if(MMI_MYDATA_SIZE_K_BYTE   <=   ulSize)  
          {  
                  n1   =   ulSize>>10;   /*The   same   as   ulSize/MMI_MYDATA_SIZE_K_BYTE*/;  
                  n2   =   ulSize   &   0x000003FF;   /*The   same   as     ulSize%MMI_MYDATA_SIZE_K_BYTE;*/  
                  n2   *=   100;  
                  n2   >>=   10;  
                  sprintf(spStr,   "%d.%d%d   KB",   n1,   n2/10,   n2%10);  
          }  
          else  
          {  
                  sprintf(spStr,   "%d   Byte",   ulSize);  
          }  
   
  }  
  Top

7 楼zijida(左八荣,右八耻,代表挂腰间,和谐贴胸前,人挡杀人,佛挡杀佛!)回复于 2005-09-22 17:39:11 得分 5

楼主小脑袋瓜儿挺灵的.Top

8 楼linxyuan(心远)回复于 2005-09-22 17:46:32 得分 5

good!  
  Top

相关问题

  • 如何实现长整数的除法
  • 如何实现除法运算
  • 如何做除法!!!!!!!!
  • 基本问题,在线等待:如何实现整数与浮点数的混合除法运算?
  • 请问如何用汇编语言实现原码一位除法(加减交替法)
  • 除法竖式的递归实现,很难啊
  • 数字电路是怎么实现除法的?
  • 怎么样实现多项式的除法?
  • 如何用c语言表示一个很大的整数,并且对于两个这样的大数如何进行它们的除法运算.请示例
  • 请问如何只用位运算就能计算除法

关键词

  • ulsize
  • spstr
  • mmi
  • mydata
  • u32
  • sprintf
  • 实现
  • xxx
  • mb
  • 显示

得分解答快速导航

  • 帖主:liulibo11119
  • jamesfancy
  • K
  • zhouhuahai
  • fjm_520
  • deping_chen
  • zijida
  • linxyuan

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo