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

麻烦说详细点,再举个例子.我基础差,怕听不懂.谢谢!!补码求原码时加1减1的是什么意思啊?原码为11101000,化为反码是00010111,但是怎么再加1啊?请详细说明... 麻烦说详细点,再举个例子.我基础差,怕听不懂.谢谢!!
补码求原码时加1减1的是什么意思啊?原码为11101000,化为反码是00010111,但是怎么再加1啊?请详细说明.谢谢!!
展开
 我来答
沙里波特
2021-08-04 · TA获得超过5251个赞
知道大有可为答主
回答量:1.1万
采纳率:95%
帮助的人:643万
展开全部
先学会二进制的加减运算吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
河北工业715
2018-05-24 · TA获得超过1756个赞
知道答主
回答量:5
采纳率:0%
帮助的人:1159
展开全部
可以通过原码、反码和补码三者的含义及关系来介绍三者之间的换算关系:
比如说0可以分为+0和-0,
原码反码都有两个,而补码只有一个;另外注意一下,
用位数表示的范围问题,
比如说用8位表示整数X的原码和反码,
则X真值的表示范围为-127~+127,
用补码表示的数,比原码多了一个数,
-128~+127。比如,-128用原码和反码无法表示 ,
用补码表示为10000000。
1、原码原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
2、反码
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
3、补码正数的补码就是其本身负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
云云说教育
推荐于2019-08-28 · 教育领域爱好者
云云说教育
采纳数:630 获赞数:403568

向TA提问 私信TA
展开全部
  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的反码:11111111 11111111 11111111 11110111

3. 补码:

正数的补码就是其原码.

负数的补码就是在其反码的基础之上+1

10.

10的原码:00000000 00000000 00000000 00001010

10的反码:00000000 00000000 00000000 00001010

10的补码:00000000 00000000 00000000 00001010

-8

-8的原码:10000000 00000000 00000000 00001000

-8的反码:11111111 11111111 11111111 11110111

-8的补码:11111111 11111111 11111111 11111000

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
天云小店
推荐于2017-10-03 · TA获得超过2.8万个赞
知道大有可为答主
回答量:3281
采纳率:91%
帮助的人:788万
展开全部
可以通过原码、反码和补码三者的含义及关系来介绍三者之间的换算关系:
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的原码)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
KO_JIMJIM
推荐于2017-09-18 · TA获得超过199个赞
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
数在计算机中是以二进制形式表示的。
数分为有符号数和无符号数。
原码、反码、补码都是有符号定点数的表示方法。
一个有符号定点数的最高位为符号位,0是正,1是副。

以下都以8位整数为例,

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

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

负数的反码是将其原码除符号位之外的各位求反
[-3]反=[10000011]反=11111100
负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。
[-3]补=[10000011]补=11111101
一个数和它的补码是可逆的。

为什么要设立补码呢?

第一是为了能让计算机执行减法:
[a-b]补=a补+(-b)补

第二个原因是为了统一正0和负0
正零:00000000
负零:10000000
这两个数其实都是0,但他们的原码却有不同的表示。
但是他们的补码是一样的,都是00000000
特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)
[10000000]补
=[10000000]反+1
=11111111+1
=(1)00000000
=00000000(最高位溢出了,符号位变成了0)

有人会问
10000000这个补码表示的哪个数的补码呢?
其实这是一个规定,这个数表示的是-128
所以n位补码能表示的范围是
-2^(n-1)到2^(n-1)-1
比n位原码能表示的数多一个
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式