c语言求反码函数 c++ 反码

C语言中,什么是补码、源码、反码?分别怎样计算?

一、原码

张掖网站建设公司成都创新互联公司,张掖网站设计制作,有大型网站制作公司丰富经验。已为张掖近1000家提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的张掖做网站的公司定做!

求原码:X≥0,则符号位为0,其余照抄;

X≤0,则符号位为1,其余照抄。

【例1】X=+1001001 [X]原 = 01001001

【例2】X=-1001001 [X]原 = 11001001

二、反码

求反码:若X≥0,符号位为0,其余照抄;

若X≤0,符号位为1,其余按位取反。

【例3】X=+1001001 [X]反 = 01001001

【例4】X=-1001001 [X]反 = 10110110

三、补码

求补码:若X≥0,符号位为0,其余照抄;

若X≤0,符号位为1,其余取反后,最低位加1。

【例5】X=+1001001 [X]补 = 01001001

【例6】X=-1001001 [X]补 = 10110111

C语言中,原码,补码和反码怎么换算?

换算方法如下:

1、数在计算机中是以二进制形式表示的。

2、数分为有符号数和无符号数,原码、反码、补码都是有符号定点数的表示方法。

3、一个有符号定点数的最高位为符号位,0是正,1是副;【原码】就是这个数本身的二进制形式。

4、正数的【反码】和补码都是和原码相同;负数的【反码】是将其原码除符号位之外的个位求反。

拓展资料

1、C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

用C语言编一个程序,使给出一个数的原码,求得反码,补码。

#includestdio.h

int main(){

int i,j,k;

int a[16], af[16], ab[16];//af存储反码,ab存储补码第0位为符号位

char b[16];

scanf("%s", b);

for(i = 0; b[i] != '\0'; i++){

a[i] = b[i] - '0';

}

j = i-1;

ab[0] = af[0] = a[0];//符号位始终不变

if(a[0] == 1){//当从屏幕输入的是负数,则作相应变换

for(i = j; i 0; i--){

af[i] = 1 - a[i];

ab[i] = a[i];

if(a[i] == 1){

i--;

break;

}

}

k = i;

for(; i 0; i--)

af[i] = 1 - a[i];

for(i = k; i 0; i--)//补码从末位数起第一个不为0,以后均取反

ab[i] = 1 - a[i];

}

else{//如果是正数,则全部复制

for(i = j; i 0; i--){//正数反码、补码都与原码相同

af[i] = a[i];

ab[i] = a[i];

}

}

printf("对应的反码是:\n");

for(i = 0; i = j; i++)

printf("%d", af[i]);

printf("\n");

printf("对应的补码是:\n");

for(i = 0; i = j; i++)

printf("%d", ab[i]);

}

在vc下编译测试通过。另,本代码未考虑输入非法问题,所输入的数字智能由1和0组成

c语言:原码,反码 补码?

1)原码表示

原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。

例如,X1=

+1010110

X2=

一1001010

其原码记作:

[X1]原=[+1010110]原=01010110

[X2]原=[-1001010]原=11001010

在原码表示法中,对0有两种表示形式:

[+0]原=00000000

[-0]

原=10000000

2)补码表示

机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。

例如,[X1]=+1010110

[X2]=

一1001010

[X1]原=01010110

[X1]补=01010110

[X1]原=[X1]补=01010110

[X2]

原=

11001010

[X2]

补=10110101+1=10110110

机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。

例如,[X1]=+1010110

[X2]=

一1001010

[X1]原=01010110

[X1]补=01010110

[X1]原=[X1]补=01010110

[X2]

原=

11001010

[X2]

补=10110101+1=10110110

(3)反码表示法

机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X]反。

例如:X1=

+1010110

X2=

一1001010

[X1]原=01010110

[X1]反=[X1]原=01010110

[X2]原=11001010

[X2]反=10110101

反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。

例1.

已知[X]原=10011010,求[X]补。

分析如下:

由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即

[X]原=10011010

[X]反=11100101+1

[X]补=11100110

例2.

已知[X]补=11100110,求[X]原。

分析如下:

对于机器数为正数,则[X]原=[X]补

对于机器数为负数,则有[X]原=[[X]补]补

现给定的为负数,故有:

[X]补=11100110

[[X]补]反=10011001+1

[[X]补]补=10011010=[X]原+1

[[X]补]补=10011010=[X]原

总结一下,原码(为负时,正时都不变)全部取反即得到反码,反码加

"1"就得到补码了,就是这么简单。


本文名称:c语言求反码函数 c++ 反码
网页URL:http://scyanting.com/article/doiosej.html