| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1813 人关注过本帖
标题:位运算求补码
只看楼主 加入收藏
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
位运算求补码
unsigned int getbits(unsigned value)
{
  unsigned int z;
  z=value&0100000;
  if(z==0100000)  /*到这里怎么知道Z是负数了?*/
    z=~value+1;
  else
    z=value;
  return z;
}
哪位帮讲下,先多谢了。
搜索更多相关主题的帖子: 运算 
2009-09-24 21:42
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:20 
在 if(z==0100000)中,0100000不是二进制数,而是八进制形式:在C语言中以0开头的数是八进制数。
而0100000对应的二进制正好是1000000000000000,其十进制是-32768。所以当value跟0100000进行位与操作时,如果z==0100000,就说明value的二进制形式中最高位是1,即符号位为1,所以此时的z就是负数了。
你自己算算看看,我是这么理解的。
2009-09-24 22:22
xdyuan33
Rank: 3Rank: 3
来 自:广西大学化工学院
等 级:论坛游侠
帖 子:146
专家分:145
注 册:2009-7-24
收藏
得分:0 
我基础还是不行呵呵,谢谢了

参与切磋是美德,每天回帖即可获得10分可用分!
2009-09-24 22:29
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
回复 3楼 xdyuan33
大家相互学习嘛,我也是看了好一会。呵呵。
2009-09-24 22:30
快速回复:位运算求补码
数据加载中...
 
   



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

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