黑马程序员技术交流社区

标题: 输入一个整数,输出原码,不是补码。 [打印本页]

作者: 倪达    时间: 2015-9-26 21:46
标题: 输入一个整数,输出原码,不是补码。

这是主要代码
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进制数


作者: wx_D3aDvzRw    时间: 2015-9-26 21:55
反码就是符号位不变  其他取反 ,先输出符号位后取反再进行代码里的运算就ok了
作者: 倪达    时间: 2015-9-26 21:59
wx_D3aDvzRw 发表于 2015-9-26 21:55
反码就是符号位不变  其他取反 ,先输出符号位后取反再进行代码里的运算就ok了 ...

负数补码-1等于反码  反码取反是原码,  符号位空出来就行了     我要输出原码
作者: wx_D3aDvzRw    时间: 2015-9-26 22:09
倪达 发表于 2015-9-26 21:59
负数补码-1等于反码  反码取反是原码,  符号位空出来就行了     我要输出原码 ...

补码就是原码取反加一,取反加一可以反向算原码的,原码与补码互为补码.




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2