对-128的补码的理解
来源:互联网 发布:北京尚学堂 java ppt 编辑:程序博客网 时间:2024/05/21 09:48
今天看到一个问-128的补码为何就是 1000 0000的贴子.问是如何计算出来?是不是还是按:取相应正数的原码,最高位即符号位,取1,其余各位取反后整个得值 +1?
按我的理解(上学时学c语言就是这样理解的,老谭那本书上讲整数的取值范围那段就有)
16位int -32768至32767 -2^(16-1)至 +2^(16-1)-1
:8位二进制的原值表达范围为:-127至127
共有256个组合序列 0000 0000 至1111 1111 。
+128的原值在8位中是表达不出来的。
+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
因为:256-128=256+(-128)的补码
而 256-128=128
所以 256+(-128)的补码=128
所以 (-128)的补码=256-128
=128
而从数学上, 128=1000 0000
故规定-128的补码为 1000 0000
所以说,128在8位内存中是表达不出来的。
不存在+128 8位原码及反码的形式,按常规算法是不对的。
不存在+128 8位原码及反码的形式,按常规算法是不对的。
注意:只是规定而已,下面还有原因。
8位二进制 的补码组合序列有
0000 0000 - 0111 1111 0 - +127
1000 0000 用来干啥好呢?(表示-0,不是的,-0的原码是1000 0000 补码是
0000 0000 - 0111 1111 0 - +127
1000 0000 用来干啥好呢?(表示-0,不是的,-0的原码是1000 0000 补码是
0000 0000 +0 的补码也是 0000 0000
)
1000 0001- 1111 1111 -1 - -127
全部状态为256个
1000 0001- 1111 1111 -1 - -127
全部状态为256个
再看看这个规律表
原码 补码 值
0111 1111 0111 1111 127
0111 1110 0111 1110 126
......补码不断-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
原码 补码 值
0111 1111 0111 1111 127
0111 1110 0111 1110 126
......补码不断-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的补码
这种办法算出的结果符合“规定值”,规定而已。
先将该负数取绝对值,再用二进制表示出这个绝对值 (不管符号位)
对该二进制数进行取反加一操作就得到负数的补码了
-128 绝对值是 128
128的二进制表示为:
1000 0000
取反
0111 1111
加1
1000 0000
这就是-128的补码
这种办法算出的结果符合“规定值”,规定而已。
0 0
- 对-128的补码的理解。
- 对-128的补码的理解。
- 对-128的补码的理解
- 对-128的补码的理解
- 对与-128的补码理解
- 我对补码的理解
- 我对补码的理解
- 关于“-128的补码补码问题”理解
- 我对补码的一点理解
- 对计算机原码/补码的理解
- 对计算机的原码,反码,补码的理解:
- 补码-自己的理解
- 补码的理解
- 对二进制补码的理解<转>
- 对C语言中补码和char数据类型的理解
- 【转载】对于补码的理解
- 关于对补码的认识!
- -128的补码
- 求数组的最大子段和,动态规划 时间复杂度O(n)
- linux查看内存
- 一种非常简单有效的基于格子的寻路算法
- struts2国际化---输出带有占位符的国际化信息以及包范围、Action范围资源文件访问
- C#基础 之 初识委托delegate
- 对-128的补码的理解
- IOS开发----CMDeviceMotion陀螺仪的使用
- QUST程序设计赛E题: 付付的繁忙生活
- 第四章思维导图
- 鸡兔同笼
- [转]MySQL存储过程调试工具-dbForge Studio for MySQL
- understanding Steering Behaviors
- oracle自带性能分析工具
- install_zj.sh脚本优化