一个字节的取值范围 | 您所在的位置:网站首页 › 10000000表示的补码 › 一个字节的取值范围 |
原码做加减 原码做加法 1+1=1 原00000001 => 真1 原00000001 => 真1 原00000010 => 真2 原码做减法 1+(-1)=0 原00000001 => 真1 原10000001 => 真-1 原10000010 => 真-2如果用原码表示,让符号位也参与计算,显然对于减法来说,结果是不正确的。这也就是为何计算机内部不使用原码表示一个数。 反码做加减 反码做加法 1+1=1 反00000001 => 原00000001 => 1 反00000001 => 原00000001 => 1 反00000010 => 原00000010 => 2 反码做减法 1+(-1)=0 反00000001 => 原00000001 => 1 反11111110 => 原10000001 => -1 反11111111 => 原10000000 => -0发现用反码计算减法,结果的真值部分是正确的。而唯一的问题其实就出现在"0"这个特殊的数值上,虽然人们理解上+0和-0是一样的,但是0带符号是没有任何意义的,而且会有[0000 0000]原和[1000 0000]原两个编码表示0。 补码做加减 补码做加法 1+1=1 补00000001 => 反00000001 => 原00000001 => 1 补00000001 => 反00000001 => 原00000001 => 1 补00000010 => 反00000010 => 原00000010 => 2 反码做减法 1+(-1)=0 补00000001 => 反00000001 => 原00000001 => 1 补11111111 => 反11111110 => 原10000001 => -1 补00000000 => 反00000000 => 原00000000 => 0这样0用 00000000 表示,而以前出现问题的-0则不存在了。而且可以用[1000 0000]表示-128: 同时为了充分利用资源,就将原来本应该表示“-0”的补码规定为表明-128。这样就可以让有符号数多一个有用的数据点。 这个值不能用普通的取反加1来计算。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |