C++primer习题答案

最近开始读C++primer,一边看书一边做其中的习题,再CSDN编辑,也算是一种记录。

练习2.1

 short ,int ,long,long long都是整数型,但是储存位数不同,分别为16,16,32,64

而unsigned即未定义符号,由于第一个二进制位数通常用来定义正负,所以定义了unsigned则正数范围扩大了两倍。

置于float和double这类浮点数类型的,首先明确浮点数的定义,计算机内部是将其分为阶码部分和尾数部分,通俗的讲,就是把我们十进制的数字变成二进制,再进行科学计数法进行存储。例如:

-10.5=》(-1010.1)=》(-1.0101)x2^3. 到这里是不是感觉和十进制的很相似呢?

转化为这样,float和double的区别要出现了,float型是32位,double是64位。这里既要保存阶码即这里的-3,又要保存尾数部分,由于利用这种方式表达,都可以化为1.xxx,所以只需保存小数点后的位数0101。以float作为例子阶码有符号,称为阶符占一个位,阶码占8个位,位数部分符号占一个位,实际储存占23位

则在计算机内部 0000 0001 1010 1100 0000 0000 0000 0000.

2进制23位折算成十进制单位,则精度大概为6-7左右,最好用计算机敲一下,这样就理解了。

练习2.2利率利用float型,本金和付款可以用int或者float,由于本金和付款一般是整数,而且与float型利率相乘的最终结果是float型

练习2.3-2.4 这里注意unsigned的定义,不会出现负数,可以想象时钟,永远不会出现-1点钟,比如凌晨1点钟-2个小时,应该是昨晚11点钟,推广到计算机内部。一旦出现负数,相当于重新绕一圈。 首先明确unsigned u是 unsigned int 的缩写,所以范围是0-49294967296

所以答案是: 32,4294967264,32,-32,0,0

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值