c语言反码函数 c语言反码补码( 二 )


1.首先,我们需要知道转换规则c语言反码函数:原码转换为逆码c语言反码函数:符号位不变,数字位逐位倒转 。
2.那么逆码到原码是一样的,但规则不同:符号位不变,数字位“位倒转” 。
3.然后是源代码 , 把原代码变成补充代码的规则:符号位不变 , 值位按相反方向,最后一位加1 。
4. 最后,将补码转换为原码:符号位不变,值位按位倒转 , 最后一位加1,即补码的补码等于原码 。
5. 求补码(变量补码)的转换规则与前一个有区别:符号位和值位倒转,最后一位加1 。
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语言编程之二进制原码、反码和补码概述
在计算机内,有符号数有3种表示法:原码、反码和补码 。

推荐阅读