二进制补码(二进制补码转换十进制)

更新时间:2023-03-01 12:55:21 阅读: 评论:0

首先,小编的理解(以前学c语言就是这样理解的,老谭(谭浩强)那本书上讲整数的取值范围那段就有):

8位二进制的原值表达范围为:-127至127

共有256个组合序列 0000 0000 至1111 1111 。

+128的原值在8位中是表达不出来的。

(1)从数学层面上去理解:

从数学上计算 256-128=128,

因为:256-128=256+(-128)的补码

而 256-128=128

所以 256+(-128)的补码=128

所以 (-128)的补码=256-128

=128

而从数学上, 128=1000 0000

故规定-128的补码为 1000 0000

所以说,128在8位内存中是表达不出来的。

不存在+128 8位原码及反码的形式,按常规算法是不对的。

注意:只是规定而已,下面还有原因。

(2)8位二进制 的补码组合序列有

0000 0000 - 0111 1111 为:0 - +127

1000 0000 表示什么呢?

(表示-0,不是的,-0的原码是1000 0000 补码是0000 0000

+0 的补码也是 0000 0000)

1000 0001- 1111 1111 -1 - -127

全部状态为256个

再看看这个规律表

......补码不断-1........

0000 0000 0000 0000 0

1000 0001 1111 1111 -1

1000 0010 1111 1110 -2

1000 0011 1111 1101 -3

......补码不断-1........

1111 1111 1000 0001 -127

无法表达 1000 0000 -128

于是就有了规定 1000 0000 定为 -128的补码

这种定法和上面数学层面的表述是一致的。

这样规定后,负数的补码在机器中就好算了。

在约定的范围内(-128-+127,对16位32位64位等扩大范围)

先将该负数取绝对值,再用二进制表示出这个绝对值 (不管符号位)

对该二进制数进行取反加一操作就得到负数的补码了

-128 绝对值是 128

128的二进制表示为:

1000 0000

取反

0111 1111

加1

1000 0000

这就是-128的补码

这种办法算出的结果符合“规定值”,规定而已。

另外一种解释:

1.

-127补+(-1补)=-128补

-127原=11111111,-127补=10000000

-1补=11111111

10000000+11111111=10000000,这就是-128补

2.

127+1=128,正数溢出,不能表示,用-128的补码表示

127补=01111111, 1补 = 00000001

127补 + 1补=

01111111+00000001=10000000,

这就是-128补码

本文发布于:2023-02-28 19:58:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167764652172923.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:二进制补码(二进制补码转换十进制).doc

本文 PDF 下载地址:二进制补码(二进制补码转换十进制).pdf

标签:补码   十进制
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|