`
lantian_123
  • 浏览: 1370151 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于补码的一篇短文

 
阅读更多

关于补码的一篇短文

首先要记住一点:计算机中数字是以二进制的补码形式来表示的。

 

计算机中表示的二进制数又称为“机器数”,机器数带有符号,符号位就用这个二进制数的最高位表示,其中0表示正数,1就表示负数。举例来说:十进制的8用二进制来表示是为00001000(这里假设用一个字节共8位表示)

8=00001000;-8=10001000

 

当然谈到补码总离不开原码,反码等这些概念,别急,先来了解一下原码等概念。

 

原码

一个正数的原码当然就是他本身转换成二进制的形式:

                        如:8=00001000

而一个负数就只要符号位置1其余为该负数的绝对值的二进制形式:                                                     如:-8=10001000

(题外话)

我们知道java中一个byte类型的数值是用一个字节表示的,那么我们就很容易知道他的取值范围是[11111111~01111111]即[-128~127],总共也就256个数字,大家如果仔细去看过jdk源代码的话,他把这256个数字都缓存起来了,于是我们可以猜猜下面这两个表达式的值应该为True还是False

 

                   Byte b1 = 127;
                   Byte b2 =127;
                   System.out.print(b1==b2);   //true


                   Integer i1 = 128;
                   Integer i2 = 128;
                   System.out.print(i1==i2);//false

 

 

 

反码:分为两种情况,正数的反码就是他本身了,负数的反码就是除了最高位的符号位保持1不变之外其他位取反。

                                             如:8=00001000

                                                    -8=11110111

 

补码:同样正数的补码也是其本身,负数就是在原码的基础上除符号位之外的位取反,然后最低位加1.                        

                                             如:8 = 00001000

                                   -8 = 11110111+1=11111000

 

小结:正数的原码=反码=补码,负数稍微复杂点,原码就高位为1,其他位和该负数对应的正数的原码一样。反码和补码都是建立在原码的基础上,反码就是除高位不变之外其他为取反即可。而补码同样是最高位不变其余位取反再最后一位加1.

 

总结:为什么计算机要用补码来表示数字呢?我们不妨来举例说明,计算机中做加减乘除是很复杂的,如果减法也可当加法用那就可以省事多了.

比如:1-1=1+(-1),

如果用源码做加法00000001+10000001=10000010=-2显然结果不对。

要是用反码:00000001+11111110 = 11111111=-0然而负数0没什么意义。如是出现了补码:00000001+11111111=00000000=0,这个就是我们需要的结果

 

 

1
0
分享到:
评论

相关推荐

    关于补码以及基本的补码运算

    补码的获取方式对于本篇内容不是重点,但简单来说,一个正数的补码就是其本身,而一个负数的补码则是将该数按位取反后加1得到的结果。例如,在8位二进制系统中,数字-5(原码为10000101)的补码是11111011,通过取反...

    logisim补码一位乘法器设计.txt

    ### Logisim补码一位乘法器设计 #### 一、Logisim简介与应用背景 Logisim是一款用于模拟数字逻辑电路的软件工具,它能够帮助用户设计、测试和优化数字逻辑电路。通过Logisim,用户可以构建复杂的电路模型,并通过...

    二进制补码一位乘法规律的推导

    二进制补码一位乘法规律的推导 本文将详细推导二进制补码一位乘法规律,并对其进行详细的分析和解释。 首先,需要了解计算机中表示带符号的二进制数称为“机器数”,这个数本身称为“真值”。机器数有四种表示形式...

    补码一位乘的程序设计

    补码一位乘的程序设计 本资源摘要信息中,我们将详细介绍补码一位乘的程序设计,主要讲解了该设计的原理、思路、实现方案和测试结果。该设计采用伟福COP2000实验仪软件和计算机实现补码一位乘的功能,利用伟福COP...

    VHDL补码一位乘法

    在计算机科学领域,补码一位乘法是计算硬件设计中的一个重要组成部分,特别是在数字逻辑和VHDL编程中。VHDL(Very High Speed Integrated Circuit Hardware Description Language)是一种用于描述数字系统的硬件描述...

    vi.zip_16进制补码_Labview 进制_labview 二进制_labview补码_二进制补码

    补码是二进制表示负数的一种方式,特别是在计算机硬件和编程中广泛使用。正数的补码与其原码相同,而负数的补码是其原码除符号位外的所有位取反(0变成1,1变成0)后再加1。这种表示方法允许用统一的操作来处理加法...

    关于补码的经典认识,对于有关补码的经典介绍

    关于补码的经典认识,是计算机科学与信息技术领域中一个至关重要的概念,它涉及到二进制数的表示方式,尤其在处理负数时显得尤为重要。补码的引入,旨在解决传统原码表示法在进行算术运算时存在的问题,如加减法不...

    补码一位乘法.swf

    是补码一位乘法的flash演示。超级生动的。

    计算机补码

    计算机补码是计算机科学中的一种二进制编码方式,用于表示有符号整数。补码的概念非常重要,因为它解决了负数的机器表示问题,提供了一种相对合理的编码方案。 什么是补码? 补码是一种特殊的二进制编码方式,用于...

    关于补码的说明.pdf

    在计算机系统中,补码是一种用于表示有符号整数的方法,它允许加法和减法的硬件电路设计得非常统一,简化了算术运算的实现。补码系统中,正数和零的补码表示与它们的原码表示相同,而负数的补码表示则是其原码...

    C#补码加法运算代码

    为了能够有效地进行负数的表示与计算,计算机采用了一种称为“补码”的表示方法。补码不仅适用于正数,还适用于负数,且能够简化加减运算的过程。在C#等编程语言中,理解并实现补码加法对于低层数据处理或特殊计算...

    二进制补码、小数的补码及运算规则

    补码是一种常见的概念,在计算机系统中,数值一律用补码来表示(存储)。补码的主要特点是:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。补码的表示方法是在原码的基础上进行修改,原码...

    定点补码一位乘法器的设计

    在计算机科学领域,定点补码一位乘法器是数字电路设计中的一个重要组成部分,尤其是在处理器内部进行算术运算时。定点表示法是指数值的大小固定,不包含小数点的表示方式,而补码则是一种用于表示负数的方法,它使得...

    补码阵列乘法器

    1、通过multisim仿真平台设计一个能计算含符号位的4位乘法器,即内部为一个3×3阵列乘法器,符号位单独处理,如图7所示。 2、输入为两个4位含符号位的补码数,输出结果亦是含符号位的数补码。 图7带求补级的阵列...

    计算机组成原理课设:原码一位乘、补码一位乘(logisim文件).circ

    计算机组成原理课程设计内容,跟着老师的讲解,自己一步步做的。 (1)Logisim仿真乘法器,原码一位乘。 (2)Logisim仿真乘法器,补码一位乘。

    补码源码反码转换工具,补码反码原码的转换工具,C/C++

    本项目是基于C++的MFC(Microsoft Foundation Classes)框架实现的一个实用工具,旨在帮助用户理解并进行原码、反码和补码之间的转换。以下是关于这些概念的详细解释: 1. **原码**: 原码是最直接的二进制表示...

    Verilog中的有符号计算之认知补码

    要想在FPGA的世界里随心所欲的进行有符号运算,必须先对补码有一个很好的认知。本文将详细介绍Verilog中的补码计算、有符号计数和FPGA的有符号计算。 Verilog中的补码计算 在Verilog中,补码计算是一种重要的概念...

    定点补码一位乘法器的设计.rar

    讨论当相乘的两个数中有一个或二个为负数的情况,在讨论补码乘法运算时,对被乘数或部分积的处理上与原码乘法有某些类似,差别仅表现在被乘数和部分积的符号位要和数值一起参加运算。 若[Y]补=Y0Y1Y2…Yn 当Y0为1时...

    计算机基础知识:原码反码补码练习(含答案)

    5. 在8位机器码中,如果一个数的补码为10110100,它表示的十进制真值为-76。这是因为对于负数,将补码转换为十进制需要先取反(除符号位外),然后加1,即10110100取反为01001011,加1得到01001010,这是-76的原码,...

Global site tag (gtag.js) - Google Analytics