| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6248 人关注过本帖, 1 人收藏
标题:用c语言怎么求一个正整数的 反码 补码 原码 ,怎么用c语言实现哦 ...
只看楼主 加入收藏
xiaxiayige
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2011-9-8
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:5 
用c语言怎么求一个正整数的 反码 补码 原码 ,怎么用c语言实现哦 ? 想了好久还是没有头目 ,提示一下吧!
     想了好久还是没有头目 ,提示一下吧!
搜索更多相关主题的帖子: c语言 正整数 
2011-09-10 11:21
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:7 
程序代码:
#include<stdio.h>
int main()
{
    int a,i=0;
    int b[8]={0};//8位表示
    printf("输入一个正整数(小于256):");
    scanf("%d",&a);
    while(a/2)
    {
        b[i]=a%2;
        a=a/2;
        i++;
    }
    b[i]=1;
    printf("原码、反码、补码(8位表示)均为:");
    for(i=7;i>=0;i--)
        printf("%d",b[i]);
    printf("\n");
    return 0;
}

A real warrior never quits.
2011-09-10 12:15
xiaxiayige
Rank: 1
等 级:新手上路
帖 子:16
专家分:7
注 册:2011-9-8
收藏
得分:0 
回复 2楼 QQ346957135
非常感谢   但是要求负数的呢?这个有点复杂吧
2011-09-12 11:18
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:7 
程序代码:
#include <stdio.h>
#include <limits.h>

char * to_binary_str(char * buffer, int value)
{
    int i;
   
    for (i = sizeof(int) * 8 - 1; i > -1; i--)
        buffer[31 - i] = ((value >> i) & 1) + '0';
    buffer[sizeof(int) * 8] = '\0';
   
    return buffer;
}

int main(void)
{
    char buffer[33];
    int n;
   
    scanf("%d", &n);
   
    if (n >= 0) {
        printf("反码:%s\n", to_binary_str(buffer, n));
        printf("补码:%s\n", to_binary_str(buffer, n));
        printf("原码:%s\n", to_binary_str(buffer, n));
    } else {
        if (n == INT_MIN)
            printf("反码:1%s\n", to_binary_str(buffer, ~n));
        else
            printf("反码:%s\n", to_binary_str(buffer, n - 1));
        printf("补码:%s\n", to_binary_str(buffer, n));
        if (n == INT_MIN)
            printf("原码:1%s\n", to_binary_str(buffer, n));
        else
            printf("原码:%s\n", to_binary_str(buffer, ~n + 1 | INT_MIN));
    }
    return 0;
}

My life is brilliant
2011-09-12 13:24
QQ346957135
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:148
专家分:658
注 册:2011-8-9
收藏
得分:0 
回复 3楼 xiaxiayige
是有点复杂唉,比如说0可以分为+0和-0,原码反码都有两个,而补码只有一个;另外注意一下,用位数表示的范围问题,比如说用8位表示整数X的原码和反码,则X真值的表示范围为-127~+127,用补码表示的数,比原码多了一个数,-128~+127。比如,-128用原码和反码无法表示,用补码表示为10000000.

A real warrior never quits.
2011-09-12 15:16
小白菜啊
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2020-6-18
收藏
得分:0 
回复 4楼 lz1091914999
想问一下,怎么算16位
2020-06-18 19:36
快速回复:用c语言怎么求一个正整数的 反码 补码 原码 ,怎么用c语言实 ...
数据加载中...
 
   



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

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