永发信息网

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

答案:3  悬赏:70  手机版
解决时间 2021-11-21 17:14
  • 提问者网友:一抹荒凉废墟
  • 2021-11-21 11:09
C语言中,原码,补码和反码怎么换算?
最佳答案
  • 五星知识达人网友:持酒劝斜阳
  • 2021-11-21 11:50
可以通过原码、反码和补码三者的含义及关系来介绍三者之间的换算关系:
1、原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位。

2、反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
第一位是符号位。

3、补码
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
第一位是符号位。

注:补码的补码等于原码,如:-1的补码为11111111,则11111111的反码为10000000
补码为10000001(-1的原码)。
全部回答
  • 1楼网友:春色三分
  • 2021-11-21 14:28
没有说到正地方的啊!
00010
  • 2楼网友:你可爱的野爹
  • 2021-11-21 13:08
数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,

原码就是这个数本身的二进制形式。
例如
1000001 就是-1
0000001 就是+1

正数的反码和补码都是和原码相同。

负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=
  1. 原码:

最高位表示符号位. 剩下的位数.是这个数的绝对值的二进制.

10的原码.

00000000 00000000 00000000 00001010 

-8的原码.

10000000 00000000 00000000 00001000 

绝对值: 正数的绝对值是自己,负数的绝对值去掉负号. 

-20.

10000000 00000000 00000000 00010100

2. 反码:

正数的反码就是其原码.

负数的反码就是在其原码的基础之上 符号位不变,其他位取反.

10的反码:  

10的原码:00000000 00000000 00000000 00001010

10的反码:00000000 00000000 00000000 00001010

-8

-8的原码:10000000 00000000 00000000 00001000

-8的反码:

换算方法如下:

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

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

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

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

  5. 正数的反码和【补码】都是和原码相同;负数的【补码】是将其原码除符号位之外的各位求反之后在末位再加1。

拓展资料:

计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过是我们绝大多数人生来具有10个手指头这个解剖学事实的结果。

尽管在历史上手指计数(5,10进制)的实践要比二或三进制计数出现的晚。".为了能方便的与二进制转换,就使用了十六进制(2 4)和八进制1.数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯