| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 871 人关注过本帖
标题:《C++Primer第4版》基本内置类型问题
只看楼主 加入收藏
书中叶
Rank: 2
来 自:河北省唐山市
等 级:论坛游民
帖 子:38
专家分:25
注 册:2010-8-5
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:3 
《C++Primer第4版》基本内置类型问题
    在《C++Primer第4版》中第二章讲了基本内置类型的问题,我有些问题搞不懂,向高人请教。
    (1)书上第31页讲
        “对于一个8位字节和32位字的机器,我们可以将存储器的字表示如下:
            736424  0 0 0 1 1 0 1 1
            736425  0 1 1 1 0 0 0 1
            736426  0 1 1 0 0 1 0 0
            736427  0 0 1 1 1 0 1 1
        在这个图中,左边是字节的地址,地址后面为字节的8位。
        如果知道地址为736425的字节类型是8位无符号整数,那么就可以知道该字节表示整数112。”
        最后一位是“1”,那么就应该说明该数是奇数,计算一下,为什么我得的是113??

    (2)“若在某机器上short类型占16位,那么可以赋值给short类型的最大数是2^15-1,即32767。”
        16位不是2字节吗?2字节不是最大到99吗?我概念糊涂了。

    (3)这个似乎是单纯的数学问题了
        “当给16位的unsigned short对象赋值100000时,赋的值是什么?”
        为什么对65536求模而不是65535?

[ 本帖最后由 书中叶 于 2010-8-12 23:08 编辑 ]
搜索更多相关主题的帖子: 类型 Primer 
2010-08-12 23:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
我也觉得是 113

二进制的16位,最大的数是 0111 1111 1111 1111,第一位是符号位,就是 32767

赋的值会被截断,求模是按2的整次方来的。65535 本来能存下的,按你的存法不就变 0 了?
其实这么理解可能更好一点,超过 16 位的被截断了。
100000 是 1 1000 0110 1010 0000 第一位上的 1 存不下,存是就是 1000 0110 1010 0000。
2010-08-13 00:48
书中叶
Rank: 2
来 自:河北省唐山市
等 级:论坛游民
帖 子:38
专家分:25
注 册:2010-8-5
收藏
得分:0 
明白了,谢谢你

科学家是要把可能的事变为可能,小说家是要把不可能的事变为可能
2010-08-13 16:24
jmjljl
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-7-3
收藏
得分:0 
呵呵
2010-08-18 15:06
快速回复:《C++Primer第4版》基本内置类型问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043975 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved