| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4524 人关注过本帖
标题:有关整型数据在内存中的存放
只看楼主 加入收藏
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:17 
有关整型数据在内存中的存放
对于turboC这样的编译器为整型数据分配2个字节最大正数32767是这样存的:0111111111111111,我想问-32768是如何存放的。为什么不是1111111111111111。在内存中是怎么存的? 谢谢大家!!!
搜索更多相关主题的帖子: 整型 内存 数据 
2010-10-25 21:13
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:0 
在计算机中,负数以其正值的补码形式表达。

2010-10-25 21:29
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:2 
在计算机中有符号数与无符号的整数存储都是以二进制的形式来存放的,但是对于无符号数来说没有什么原码、补码、以及反码一说,只有有符号数才会有这一概念!!无符号数只是以二进制码来存储的!!比如对于unsigned short int ux = 65535 ;在计算机中的二进制码是:1111 1111 1111 1111 (十六位)因此对于unsigned short int来说能够表示的最大的数就是:65535。同样的道理unsigned int以及unsigned long int 能够表示的最大的数就可以知道了呀!!!
然后在说说有符号数的表示是怎么回事。刚才说过有符号数是以二进制补码的形式在计算机中存储的,其中最高为表示的是符号位,比如:255 的二进制补码是:0000 0000 0000 0000 0000 0000 1111 1111
么去求一个正数的补码呢?正数的原码、反码以及补码都是一样的!那么-255的补码是多少呢?(也就是在计算机中是如何表示的呢?)求一个负数的补码先去求这个负数绝对值的原码,也就是255的原码:0000 0000 0000 0000 0000 0000 1111 1111 然后再取反:1111 1111 1111 1111 1111 1111 0000 0000 然后加一:
1111 1111 1111 1111 1111 1111 0000 0001

愿用余生致力编程
2010-10-25 21:40
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:2 
-32767的二进制本来应该是-0111111111111111,但是,在计算机内带符号数是用其补码来存储的。所以复数的补码是其二进制编码按位取反,并且加一得来的。
所以-32767的存储形式是1000000000000001。
这样的好处是在底层进行加减计算的时候,不用考虑符号。比如减法,不用考虑被减数和减数的大小关系。直接对其补码进行加法运算就可以解决了。

编程的道路上何其孤独!
2010-10-25 21:46
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:0 
回复 3楼 我菜119
偶是说负数在计算机中是以反码形式储存的。。。
你说的也不完全对。像一个字节最小的是-128,用你说的可就表示不出来了
2010-10-25 21:51
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
收藏
得分:0 
回复 3楼 我菜119
32768 表示不出来,-32768怎么表示?最小的负数为什么是-32768,在内存中是如何存的。?麻烦给出答案?

初生牛犊,望多多照顾!
2010-10-25 22:15
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
收藏
得分:0 
回复 2楼 gmac
32768 表示不出来,-32768怎么表示?最小的负数为什么是-32768,在内存中是如何存的。?麻烦给出答案?

初生牛犊,望多多照顾!
2010-10-25 22:16
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
收藏
得分:0 
回复 3楼 我菜119
32768 表示不出来,-32768怎么表示?最小的负数为什么是-32768,在内存中是如何存的。?麻烦给出答案?

初生牛犊,望多多照顾!
2010-10-25 22:17
JackyZhang
Rank: 2
等 级:论坛游民
帖 子:82
专家分:29
注 册:2010-7-12
收藏
得分:0 
回复 6楼 JackyZhang
我就说两个字节的情况

初生牛犊,望多多照顾!
2010-10-25 22:19
gmac
Rank: 2
等 级:论坛游民
帖 子:174
专家分:85
注 册:2010-9-28
收藏
得分:1 
回复 8楼 JackyZhang
1000000000000000
2010-10-25 23:04
快速回复:有关整型数据在内存中的存放
数据加载中...
 
   



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

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