A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


这是主要代码
int print_B(int a){//转化为2进制数
    printf("a的值是:%d转化为二进制是:\t",a);
    if (a>0) {//判断第一位
        printf("0");
    }
    else{
        printf("1");
    }

    int count=sizeof(int)*8-2; //显示要右移的位数
    int temp;

    while (count>=0) {
        temp=a>>count&1;  //每一位与1的结果

        printf("%d",temp); //输出每一位2进制
        if(count%4==0) //每4个中间加入一个空格
            printf(" ");
        count--;
    }
    printf("\n");

    return 0;
}

以上是补码   要求反码,如果还有大神会12-2(要用加法计算出,记得以前老师讲过,机器语言只有加法吧)求出2进制数

3 个回复

倒序浏览
反码就是符号位不变  其他取反 ,先输出符号位后取反再进行代码里的运算就ok了
回复 使用道具 举报
wx_D3aDvzRw 发表于 2015-9-26 21:55
反码就是符号位不变  其他取反 ,先输出符号位后取反再进行代码里的运算就ok了 ...

负数补码-1等于反码  反码取反是原码,  符号位空出来就行了     我要输出原码
回复 使用道具 举报
倪达 发表于 2015-9-26 21:59
负数补码-1等于反码  反码取反是原码,  符号位空出来就行了     我要输出原码 ...

补码就是原码取反加一,取反加一可以反向算原码的,原码与补码互为补码.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马