| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2697 人关注过本帖
标题:验证了一个公式(关于取相反数的)
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:6 
验证了一个公式(关于取相反数的)
程序代码:
int main(void)
{
    //一次验证  验证由负数--->正数
    int s=-15;
    printf("s=%d\n",s);
    int m=~(s)+1;
    printf("m=%d\n",m);
    //二次验证  验证由正数--->负数
    s=15;
    printf("s2=%d\n",s);
    m=~(s)+1;
    printf("m2=%d\n",m);
    return 0;
}
2014-07-04 09:55
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:50 
数值在计算机中以补码的方式存储,这算法就是模拟补码运算

边界值会不会越界啊

[ 本帖最后由 书生等待 于 2014-7-4 10:33 编辑 ]
2014-07-04 10:22
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
int main(void)
{
    //一次验证  验证由负数--->正数
    int s=2147483647;  //这个能取到正确结果  超过它就完了
    printf("s=%d\n",s);
    int m=~(s)+1;
    printf("m=%d\n",m);
    return 0;
}

DO IT YOURSELF !
2014-07-04 10:39
书生等待
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:280
专家分:689
注 册:2013-2-22
收藏
得分:0 
嗯,-2^31   
毕竟int型根本没有数2^31
2014-07-04 10:45
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用书生等待在2014-7-4 10:45:15的发言:

嗯,-2^31   
毕竟int型根本没有数2^31

和cpu有关吧  如果是64位cpu 我猜想 int应该是2^63-1

DO IT YOURSELF !
2014-07-04 10:47
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:50 
以下是引用wp231957在2014-7-4 10:47:17的发言:

 
和cpu有关吧  如果是64位cpu 我猜想 int应该是2^63-1

不要猜 不同环境下的大小是恒定的 可以用sizeof看
2014-07-05 11:39
魑魅魍魉!
Rank: 3Rank: 3
来 自:亲爱MM肚子里!
等 级:论坛游侠
威 望:1
帖 子:61
专家分:149
注 册:2014-5-3
收藏
得分:0 
原来~  还可以在这里用。 受教了
2014-07-06 10:57
快速回复:验证了一个公式(关于取相反数的)
数据加载中...
 
   



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

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