标题:我发一个关于二进制 0 1 相互转换的 帖子 诚征优秀代码 欢迎各路高手进入 ...
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
结帖率:99.76%
已结贴  问题点数: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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
帖 子:735
专家分:3478
注 册:2013-1-26
得分:10 
直接按位与"1"异或不行?

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

大开眼界
2015-05-26 10:03
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册: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: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 9楼 wmf2014
是的

DO IT YOURSELF !
2015-05-26 10:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-445781-1-1.html




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

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