精华内容
下载资源
问答
  • 2021-07-29 05:44:56

    原码:将一个整数,转换成二进制,就是其原码。如单字节的5的原码为:0000

    0101;-5的原码为1000 0101。

    反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。如单字节的5的反码为:0000

    0101;-5的反码为1111 1010。

    补码:正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的原码为1111

    1011。

    在计算机中,正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000

    0101。负数用补码表示,如单字节-5,在计算机中表示为1111 1011。

    这儿就有一个问题,为什么在计算机中,负数用补码表示呢?为什么不直接用原码表示?如单字节-5:1000 0101。

    我想从软件上考虑,原因有两个:

    1、表示范围

    拿单字节整数来说,无符号型,其表示范围是[0,255],总共表示了256个数据。有符号型,其表示范围是[-128,127]。

    先看无符号,0表示为0000 0000,255表示为1111 1111,刚好满足了要求,可以表示256个数据。

    再看有符号的,若是用原码表示,0表示为0000 000。因为咱们有符号,所以应该也有个负0(虽然它还是0):1000

    0000。

    那我们看看这样还能够满足我们的要求,表示256个数据么?

    正数,没问题,127是0111 1111,1是0000 0001,当然其它的应该也没有问题。

    负数呢,-1是1000 0001,那么把负号去掉,最大的数是111

    1111,也就是127,所以负数中最小能表示的数据是-127。

    这样似乎不太对劲,该如何去表示-128?貌似直接用原码无法表示,而我们却有两个0。

    如果我们把其中的一个0指定为-128,不行么?这也是一个想法,不过有两个问题:一是它与-127的跨度过大;二是在用硬件进行运算时不方便。

    所以,计算机中,负数是采用补码表示。如单字节-1,原码为1000 0001,反码为1111 1110,补码为1111

    1111,计算机中的单字节-1就表示为1111 1111。

    单字节-127,原码是1111 1111,反码1000 0000,补码是1000 0001,计算机中单字节-127表示为1000

    0001。

    单字节-128,原码貌似表示不出来,除了符号为,最大的数只能是127了,其在计算机中的表示为1000 0000。

    2、大小的习惯(个人观点)

    也可以从数据大小上来理解。还是以单字节数据为例。有符号数中,正数的范围是[1,127],最大的是127,不考虑符号为,其表示为111

    1111;最小的是1,不考虑符号为,其表示为000 0001。

    负数中,最大的是-1,我们就用111 1111表示其数值部分。后面的数据依次减1。减到000

    0001的时候,我们用它标示了-127。再减去1,就变成000

    0000了。还好我们有符号为,所以有两个0。把其中带符号的0拿过来,表示-128,刚好可以满足表示范围。

    更多相关内容
  • 计算机原码反码补码_0

    千次阅读 2021-07-28 11:17:25
    计算机原码反码补码_0》由会员分享,可在线阅读,...计算机中就用一个数的最高位作为符号位,并用0表示正数,1表示负数。这样数的符号也可以用数字表示了。在计算机中负数的二进制有3种表示方法:原码、反码和补...

    《计算机原码反码补码_0》由会员分享,可在线阅读,更多相关《计算机原码反码补码_0(3页珍藏版)》请在人人文库网上搜索。

    1、计算机原码反码补码在数学中是将正号+ 负号- 放在绝对值前边表示该数是正数还是负数的,计算机只能识别0和1,使用的是二进制。计算机中就用一个数的最高位作为符号位,并用0表示正数,1表示负数。这样数的符号也可以用数字表示了。在计算机中,负数的二进制有3种表示方法:原码、反码和补码。任何正数的原码反码和补码形式完全相同,而负数则有各种不同的表示形式。 那么在计算机中,我们用二进制来表示数,所有的数可以分成两部分。一部分是符号,另一部分是数值,所以用二进制表示出来的数也就有了符号位和数值位之分。如果只表示一个数,我们称之为:真值;既有数又有符号的我们称之为机器码。 正整数: 原码,补码,反码的符号位。

    2、固定为0,数值位都是真值。所以一个正整数的原码,补码,反码是相同的。 负整数: 原码,补码,反码的符号位固定为1不变,数值位不相同。 原码的数值位是真值; 反码:原码数值位的每一位二进制数位求反得到; 补码:反码数值位最低位加1得到。 一原码 8 原码:0000,1000 -8 原码:1 000,1000 二反码 8 反码:0 000,1000 -8 反码:1 111,0111 三补码 8 补码:0 000,1000 -8 补码:1 111,1000 为什么要用到原码、反码、补码 原码求和运算的问题: 假设字长为8bits 十进制 (1) 10 - (1)10 = (1)10 + (-1)10。

    3、 = (0)10 按照原码的表示规则,十进制的1 的原码是 00000001, 十进制的-1 原码是 10000001 二进制 (0 0000001)原 + (1 0000001)原 = (1 0000010)原 = ( -2 ) 显然不正确。 当1-1 就相当于 1+(-1) 执行二进制运算时结果为10000010 是-2 结果是错误的! 解决问题方案: 在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上。对除符号位外的其余各位逐位取反就产生了反码。反码的取值空间和原码相同且一一对应。 反码的减法运算: 十进制: (1)10 - (2)10 = (1)10 + (-2。

    4、)10 = (-1)10 二进制: (0 0000001)反 + (1 1111101)反 = (11111110)反 = (-1) 正确。 反码求和运算的问题: 十进制: (1)10 - (1)10 = (1)10 + (-1)10 = (0)10 二进制:(0 0000001)反 + (1 1111110)反 = (1 1111111)反 = ( -0 ) 有问题。 问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的。 补码求和运算: 负数的补码就是对反码加一,而正数的补码不变,正数的原码反码补码是一样的。 十进制: (1)10 - (1)10 = (1)10 + (-1)10 = (0)10 二进制:(0 0000001)补 + (1 1111111)补 = (0 0000000)补 = ( 0 ) 正确。 十进制:(1)10 - (2)10 = (1)10 + (-2)10 = (-1)10 二进制:(00000001)补 + (11111110)补 = (11111111)补 = (-1) 正确。 所以补码的设计目的是: 使符号位能与有效值部分一起参加运算,从而简化运算规则。补码机器数中的符号位,并不是强加上去的,是数据本身的自然组成部分,可以正常地参与运算。 使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。。

    展开全文
  • 我那时没搞懂为什么这样规定,我觉得 1 么,代表正数挺合理的,那么 0 就自然表示负数咯,所以不解,只能死记硬背:0正1负我个人对于不知道前因后果而要死记硬背的东西是很难记住的,黑格尔《法哲学原理》里说过:...

    你好,我是悦创。

    大学时上计算机组成原理课程的时候,上到计算机如何存储数据的相关知识时,因为计算机世界里面所有的数据归根结底都是由 0 和 1 来存储的,那么如何表达数值的正负呢?

    只知道书本上说是有一个符号位,当该符号位为 0 时,表示的是正数,为 1 时表示负数。我那时没搞懂为什么这样规定,我觉得 1 么,代表正数挺合理的,那么 0 就自然表示负数咯,所以不解,只能死记硬背:0正1负

    我个人对于不知道前因后果而要死记硬背的东西是很难记住的,黑格尔在《法哲学原理》里说过:存在即合理,我也觉得一个东西的存在必然是有它的原因的,只有知道为什么这样、找到根源,我们才能更好地理解它。现在我来揭示在计算机表示数值正负时,为什么 0 为正,1 为负。

    当代绝大多数计算机表示浮点数都是采用 IEEE 标准的,这里简化一下,我们只关心符号位,那么对于一个数,计算机其实是以下面的式子来描述它的:在这里插入图片描述

    这里的指数 s 就是用来决定数值 X 是正数还是负数,显而易见,当 s=0 时,则 X 为正数(因为任何数的 0 次幂都是 1),当 s=1 时,则 X 为负数(因为 -1 的 1 次幂为 -1),至此我们就理解了为什么符号位为 0 时表示正数,为 1 时表示负数啦,而且这辈子都不会记错了吧!

    博客首发:https://bornforthis.cn/posts/14.html

    欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!

    公众号:AI悦创

    AI悦创·推出辅导班啦,包括「mysql、Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

    方法一:QQ在线

    方法二:微信:Jiabcdefh

    展开全文
  • 计算机中正数负数的存储方式

    千次阅读 2019-08-30 14:52:53
    本篇主要详细讲解计算机的原码,反码与补码 一,机器数与真值 ...说明机器数是带符号的,其中最高位0表示正数,1表示负数。 2,真值 列如上面的有符号数1000 0011表示-3,而不是无符号数131。为了区分...

    本篇主要详细讲解计算机的原码,反码与补码
    一,机器数与真值
    1,机器数
    机器数:一个数在计算机中的二进制表示形式
    比如十进制中的数 +3 ,如果用字长为8位的存储单元来存储,则二进制表示为00000011。如果是 -3,二进制表示为10000011 。
    说明机器数是带符号的,其中最高位0表示正数,1表示负数。
    2,真值

    列如上面的有符号数1000 0011表示-3,而不是无符号数131。为了区分,将带符号位的机器数对应的真值称为机器数的真值。

    机器数 00000011的真值 = +000 0011 = +3 机器数 10000011的真值 = -000 0011 = -3
    二,原码,反码,补码的基础概念和计算方法
    原码,反码,补码只是计算机存储数字的一种方式。
    1,原码
    原码就是用第一位表示符号位,其余位表示值,比如8位的二进制数

    [+1]= 0000 0001

    [-1]= 1000 0001

    因为第一位为符号位,所以8位二进制数的取值范围为

    [1111 1111 , 0111 1111] 即 【-127,+127】

    2,反码
    反码是在原码的基础上符号位不变,其余的位数取反,比如

    [+3] = 00000011 =0111 1100

    [-3] = 1000 0011 =1111 1100

    3,补码
    正数的补码为它本身,比如

    [+3] = 0000 0011 =0000 0011

    负数的补码为其反码+1

    [-3] = 1000 0011 =1111 1100=1111 1101

    三,为何要用原码,反码,补码
    通过上述我们知道计算机有三种编码方式,对于正数三种编码方式的结果都相同

    [+3] = 0000 0011 =0000 0011=0000 0011

    [-3]= 1000 0011 =1111 1100=1111 1101

    首先, 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减。 但是对于计算机, 辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法。
    我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 3-3 = 3 + (-3) = 0 , 所以机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了。
    原码将符号位参与运算的计算方法如下

    3-3=3+(-3)= 0000 0011 + 1000 0011 = 1000 0110 = -6

    如果用原码表示让符号位参与运算,对于减法来说结果显然不正确,这就是计算机内部不适用原码表示一个数的原因。
    反码的计算方法如下

    3-3=3+(-3)= 0000 0011 + 1000 0011 = 0000 0011 +1111 1100 = 1111 1111 = 1000 0000 = -0

    可以看到用反码计算减法结果真值部分是正确的,但数字0却有两种编码方式+0与-0,显然0带符号位没有任何意义。而且会有0000 0000和1000 0000两个编码表示0。
    补码的出现就解决了0的符号以及两个编码的问题
    补码的计算方法如下

    3-3=3+(-3)= 0000 0011 + 1000 0011 = 0000 0011 +1111 1100 = 0000 0011 + 1111 1101 =0000 0000 = 0000 0000 = 0

    这样0用[0000 0000]表示,而以前出现问题的-0则不存在了。而且可以用[1000 0000]表示-128

    (-1)+(-127)= 1000 0001 + 1111 1111 = 1111 1110 +1000 0000 = 1111 1111 + 1000 0001 =1000 0000 = -128

    使用补码运算修复了0的编码表示,而且还能表示一个最低数,-128并没有原码和反码表示。8位二进制数表示的范围为[-128,127],也就是[-27,27-1],其他同理。

    展开全文
  • 负数正数的概念是什么

    千次阅读 2021-07-25 04:10:26
    负数正数的概念是什么2020-10-17 17:22:09文/张孟影负数是小于零的数。负数在数前加负号来表示,如-3,-5。小编为大家带来了负数正数相关知识点。...数轴线上,负数在0的左侧,最早记载负数的是我国古代的数学...
  • 待到秋来九月八,我花开尽百花杀负数是...反码转载一篇文章,很好的理解了负数在计算机中的机制,留下来学习:负数是如何在计算机中储存的举例来说:+8在计算机中表示为二进制的1000,那么-8怎么表示呢?可以将一...
  • 参考:...  原码:将一个整数,转换成二进制,就是其原码。 ... 如单字节的5的原码为:0000 0101;... 反码:正数的反码就是其原码;负数的反码是将原码,除符号位以外,每一位取反。  如
  • 计算机中正数,负数到底是什么?

    千次阅读 2017-11-14 10:18:25
    ---------------------------------------- author:hjjdebug date: 2017年 11月 14日 星期二 09:47:13 ...我要用最通俗的语言,解释清楚计算机中正数,负数和补码的概念! 1. 计算机的算术,逻辑运算单元(cpu)是不区分正
  • 话说我平时无聊就会想一些奇奇怪怪的问题,今天又突然想到了一个奇怪的问题——为啥计算机里“0”代表的是正数,“1”代表的是负数? 为此,我专门百度了下这个问题的答案 ↓↓↓↓↓↓ 知心的百度回答者热心...
  • 因为第一位用于当做符号位,第1个bit表示符号,0表示正数,1表示负数。 基本类型 占的内存(1字节是8位) 表示范围 byte 1字节 -128至127:-2的7次方至2的7次方-1 short 2字节 -32768...
  • 计算机中的正负数表示

    千次阅读 2020-04-19 19:08:11
    32位系统,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位都为1),而最小值是0x80000000(除了最高1bit,其他31位都...
  • 计算机中负数的加减

    2021-06-26 10:41:23
    为了便于理解,我们先看一个十进制的例子:167-52=167+(-52)=167+(999-52)-1000+1=167+947-1000+1=1114-1000+1=114+1=115167-52→减法转换成加法167+(-52)→负数取9的补码表示167+947→114进1→高位进的1加到低位...
  • 关于负数在计算机中表示方法

    千次阅读 2018-07-19 15:56:02
    这就是为什么char 型的变量的取值范围为-128~+127,因为他的第一位要表示一个数的正负符号,第一位为0表示正数,为1表示负数 如:用char 定义的十进制数18 二进制:0001 0010B 八进制:022 十六进制:0x12 如:...
  • 标准计算机中规定,把内存最高位作为符号位,且最高位为0表示正数,为1表示负数 原码        •原码:一种计算机对数字的二进制表示方法,并带有符号位(最高位为0表示正数,...
  • 正数负数和补码

    千次阅读 2021-08-17 15:25:30
    这里,就要用到补码这个概念了,先给出结论吧:正数负数在计算机其实都是使用补码来存放的,并且在计算机中是没有减法运算的,减法实际上就是补码直接相加。 正数负数的补码 补码是计算机存放数据之前对数据做了...
  • 计算机中负数表示

    千次阅读 2019-03-08 16:34:10
    1.计算机中,不管正数还是负数都用二进制补码表示。 2.正数的原码、反码、补码都一样。假设整型是8位二进制表示,那么正数表示范围是0~127。补码表示是0000 0000~0111 1111 3.下面开始理解负数的补码:假设...
  • 负数在现代计算机里一般用补码表示正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 111 1111 再...
  • 机器数:一个数在计算机中的二进制表示计算机中机器数的最高位是符号位,正数符号位为0负数符号位为1。机器数包含原码、反码和补码三种表示形式。 比如,十进制的数 +3 ,计算机字长为8位 转换成二进制就是...
  • 计算机中正数是按照原码存储的,负数是按照补码存储的 下面举例 1 和-1,按照8位存储。 : 正数正数的原码,反码,补码都和原码一样,即正常的二进制表示负数:原码就是正常的二进制表示。反码就是原码的按位...
  • 一....左右两个二进制相同"假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:00000000 00000000 00000000 000001015转换成二制是101,不过int类型的数占用4字节(32位),所以前...
  • 值得注意的是,在计算机中如果两个数计算的结果是正数,那么该值就是实际计算结果,如果计算结果是负数,就需要对计算结果进行一次取反的逆运算,得到实际的计算结果。 为什么byte转int的时候都要把byte数据&...
  • 转载一篇文章,留下来学习,加深下印象。 ... 问: 负数在计算机中如何表示?...很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,8位机
  • [计算机基础]正数负数的取反操作

    千次阅读 2020-10-02 20:15:12
    正数负数的取反操作 下面的表示将用“,”分隔符号位和数字位。 正数取反 如对15取反: 15的二进制为(0,00001111)2(0,00001111)_2(0,00001111)2​由于是正整数,其原码就是补码。 对其补码取反(1,11110000)2(1,...
  • 负数的二进制位表示法 原码:一个整数按照绝对值的大小转换成的二进制数,称为原码 一个short 16位的整数9的原码是: 0000 0000 0000 1001 1 反码:一个二进制数按位取反,所得的二进制数成为原二进制数的反码 取...
  • 计算机中正负数表示

    千次阅读 2018-06-13 10:54:26
    转自:http://jinweijingjing.blog.sohu.com/82869658.html在计算机系统,数值一律用补码来表示(存储)。 主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补 码...
  • 负数在计算机中的存储方式

    千次阅读 2019-10-06 14:28:43
    最高位为 1 时表示负数,为 0表示正数。 正数内存是以原码的形式储存,负数在内存是以补码的形式存储。 二、负数的计算 计算方式:原码 ——> 反码 ——> 补码 例如:十进制 -9 (short int 型为16位) ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,582
精华内容 19,032
关键字:

在计算机中0表示正数还是负数