| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3017 人关注过本帖, 3 人收藏
标题:我发一个关于二进制 0 1 相互转换的 帖子 诚征优秀代码 欢迎各路高手进入 ...
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏(3)
已结贴  问题点数:100 回复次数:49 
我发一个关于二进制 0 1 相互转换的 帖子 诚征优秀代码 欢迎各路高手进入:
样例输出见图片:
图片附件: 游客没有浏览图片的权限,请 登录注册


要求: 就是把一个整型数据按位取反  比如  1011 变为0100   1111 变为0000  1000 变为0001 等等

我的代码  (不知是否有bug 欢迎指正)

程序代码:
#include <stdio.h>  

//按位(二进制)输出一个整型数据
void prnbit(int k)
{
    if(k==0) return;
    prnbit(k>>1);
    if(k & 1==1) printf("%1d",1); else printf("%1d",0);
}

int main() 
{  
    int i=3456;
    printf("原始数据是%6d  按位(二进制)输出是:  ",i);
    prnbit(i);
    printf("\n");
    int j=i;
    int k=0;
    while(i>0)
    {
        if(i & 1==1) j &=(~(1<<k));else j|=(1<<k);  //判断当前位是1 则置0  反之是0则置1
        i>>=1;
        k++;
    }
    printf("\n转换后是  %6d  按位(二进制)输出是:  ",j);
    prnbit(j);
    printf("\n");
    return 0;
}  
搜索更多相关主题的帖子: 二进制 color 图片 
2015-05-26 09:58
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:10 
好像有些编译器会编译失败

总有那身价贱的人给作业贴回复完整的代码
2015-05-26 09:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 2楼 embed_xuel
我的vs2010 有一个警告:“&”: 检查运算符优先级可能存在的错误;使用圆括号阐明优先级

但是 貌似不影响结果呢

DO IT YOURSELF !
2015-05-26 10:00
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:10 
没搞错吧?这需要算法?一个取反运算符不就解决了。

能编个毛线衣吗?
2015-05-26 10:02
lianyicq
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:26
帖 子:737
专家分:3488
注 册:2013-1-26
收藏
得分:10 
直接按位与"1"异或不行?

[ 本帖最后由 lianyicq 于 2015-5-26 10:13 编辑 ]

大开眼界
2015-05-26 10:03
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以下是引用wmf2014在2015-5-26 10:02:47的发言:

没搞错吧?这需要算法?一个取反运算符不就解决了。



不一样的  

比如:
    int i=345;
    printf("\n转换后是  %6u    ",~i);
这个和我的测试案例是不一样的结果  也不是我想要的结果

[ 本帖最后由 wp231957 于 2015-5-26 10:12 编辑 ]

DO IT YOURSELF !
2015-05-26 10:05
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
回复 6楼 wp231957
你转成usigned不就行了

能编个毛线衣吗?
2015-05-26 10:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 7楼 wmf2014
你试试

DO IT YOURSELF !
2015-05-26 10:08
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
你的意思是高位为0的忽略?

能编个毛线衣吗?
2015-05-26 10:11
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 9楼 wmf2014
是的

DO IT YOURSELF !
2015-05-26 10:12
快速回复:我发一个关于二进制 0 1 相互转换的 帖子 诚征优秀代码 欢迎各路高 ...
数据加载中...
 
   



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

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