| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2173 人关注过本帖
标题:求负数的补码问题
取消只看楼主 加入收藏
huxs
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-10-7
收藏
 问题点数:0 回复次数:3 
求负数的补码问题
怎么求一个负数的补码呢??我写了个程序但是老是不对..帮忙看看
#include<stdio.h>
#define N 16
int buma(int a)
{
int b,c;
b=(-1)<<(N-1);
c=((~a)|b)|1;

return c;
}
int main()
{
int a,b;
scanf("%d",&a);
printf("%x %d\n",a,a);
b=buma(a);
printf("%x %d\n",b,b);
return 0;
}
搜索更多相关主题的帖子: 负数 
2007-11-09 11:11
huxs
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-10-7
收藏
得分:0 
原来是忘进位了,终于搞懂..
2007-11-09 11:22
huxs
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-10-7
收藏
得分:0 
由原码到补码:取反加一。
int buma(int a)
{
int b,c;
if(a<0)
b=-b;/*化成正数*/
c=b^-1;/*得反码*/
c=c|1;/*末位加1*/
return c;
}
想了想 好像不行 还请高手指正 :)
为何要先把它化成正数呢,各位取反又不是说把负数变成正数,肯定不行的,而且好象加一不能用或,用或不会进位,所以c=c|1;也应改成:c=c+1;
2007-11-09 22:17
huxs
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2007-10-7
收藏
得分:0 

LS说的对,呵呵,没注意到这点,谢谢.
不过好象负数的补码说的就是:符号位不变,其他各位取反,然后整体加1,应该用c=c+1;我觉得..

2007-11-10 13:32
快速回复:求负数的补码问题
数据加载中...
 
   



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

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