判断计算机的大小尾数的方法

也是在c++博客里写的,希望和大家一起学习。
 
 

这是《程序员面试攻略》上的一道题,先前也有一位公司同事问过我,今天又重新拿起看了一下。

书中介绍了两种方法
第一种是这样的利用强制类型转换
bool endianness()
{
      int testNum;
     char*  ptr;

     testNum = 1;
     ptr = (char*)&testNum;
     return ptr;
}

这个方法还比较好理解。

第二种方法就是利用union。
bool endianness()
{
    union{
         int theInteger;
         char singleChar;
   }endianTesg;

   endianTest.theInteger = 1;
   return endianTest.singleChar;
}

这种方法很巧妙。带着困意就是没有看懂,一个个问号就蹦出来了?这是为什么呢?

说实话,union在学习和工作中用的还真的不是很多。其用法还真是不记得。
所以赶快到网上去搜了一下。有篇文章还不错,我看懂了。
共用体union用法讲解
链接地址:http://blog.ednchina.com/likee/20666/message.aspx

Union表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型和不同长度的变量。其长度为Union中最大的变量长度。

这样,我们就不难理解上面的程序,theInteger和singleChar是共用一个内存位置的,如果是小尾数法的话,那么singleChar为1,对应theInteger的低八位;如果是大尾数法的话,那么singleChar为0, 对应theInteger的低八位。


继续努力学习!
朝着梦想加油前进。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值