求一个数的补码描述:输入一个八进制数,然后输出它的补码

## 1 题目

功能:求一个数的补码描述:输入一个八进制数,然后输出它的补码

2 思路

一个正数的补码等于该数原码,一个负数的补码等于该数的反码加 1。本例的关键是如何判断一个数是正数还是负数。当最高位为 1 时,则该数是负数;当最高位为 0 时,则该数是正数。因此,数据 a 和八进制数据 010000 进行与运算,保留最高位得到数据的正负

3 代码

#include <stdio.h>

#include <stdlib.h>

/**

功能:求一个数的补码

描述:输入一个八进制数,然后输出它的补码

**/

intmain(intargc,charconst*argv[]) {

unsignedshorta,z;

  printf("请输入一个八进制数:\n");

scanf("%ho",&a);            // 输入一个八进制数

  z=a&0100000;                  // 0100000的二进制形式为最高位为1,其余为0

  if(z==0100000)                  // 如果a小于0

    z=~a+1;                      // 取反加1

  else

    z=a; 

printf("结果是: %o\n",z);    // 将结果输出

}

示例结果:

$ gccex083.c-odemo

$ ./demo

请输入一个八进制数:

115333

结果是:62445

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容