一个字节的取值范围 您所在的位置:网站首页 10000000表示的补码 一个字节的取值范围

一个字节的取值范围

2024-03-20 17:16| 来源: 网络整理| 查看: 265

原码做加减

原码做加法 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 实验室设备网 版权所有