精华内容
下载资源
问答
  • 如果知道二进制补码、十六进制或十进制其中一个,需要转换出其它形式,那么也是很简单的。 对于二进制和十六进制直接转换(技巧在于记住1~15的二进制、十六进制转换关系表,熟练于心) 对于无符号数(正数)来说...

    前言

         我们都知道计算机内部是使用二进制来进行运算的,那么你对于二进制转换为其它进制或者其它进制数转换为二进制数是否熟练于心呢?

         与我们现实中的十进制不同,计算机内部使用二进制表示(一般我们书写用十六进制来展示,这样比较简洁,相比一大串01来说),也可以用ASCALL码表示,但它们都有一个问题:表示负数并不明显。所以我们需要了解另一种计算机内部的表示方法:二进制补码。

         对于求解二进制的补码,你是否存在诸多的疑问?例如为什么可以采用对原码求反码,之后加一得到补码的操作?为什么可以用十六进制10000减去负数的绝对值就得到负数的二进制补码表现形式?如果你有这些疑问的话,让我们一起来走进01世界吧(如果仅仅对二进制补码不解,请直接跳转到后半部分)。

     

    进制转换技巧一窥:

    1、对于二进制和十六进制的转换:

         首先对于二进制和十六进制来说我们都是直接转换的,毕竟每四位二进制就可以表示一位十六进制数,而十六进制数也是每一位表示四位二进制数。他们之间的转换诀窍就是将0~15的二进制十六进制表转换熟记于心即可。

    2、对于二进制补码的转换:

    1. 对于无符号数(正数)来说,二进制的补码就是它本身,没有什么特别的,所以这里重点强调有符号数(负数的表示)
    2. 对于无符号数(负数)来说,计算机内部只有一种表示方法(就使用补码表示),但是有求解补码有两种方法,实际上我们自己手写的数字逻辑计算是一种,计算机内部计算又是一种:
    • 我们将其转换为十进制数(绝对值),然后转换为二进制得到原码,再对原码取反(也就是0变1,1变0),然后加一就得到了二进制补码--->这里我将它命名为方法一,它其实就是计算机内部进行的计算方式。
    • 我们先用十六进制表示这个数的无符号数(也就是取绝对值然后表示为十六进制数),然后用10000H(表示十六进制)减去这个数,就得到了该数的字长二进制补码表示--->命名方法二(这个才是最开始科学家想出来的计算方式,要了解这个方法,我们需要了解模的概念,可以直接关注下半部分。因为计算机内部是不可能进行取绝对值,减法运算的,所以计算机科学大佬们就想出了方法一的办法,让计算机来求解。)

      ------->我们可以用方法二来计算,用方法一来验算,这样做出来的结果一定就是正确的(但是我更加推荐直接方法二计算即可,因为它本来就是我们求解二进制补码的方法,只是为了让计算机可以理解我们的做法,才使用方法一这样的反码加一方式)。

     

    一、二进制和十六进制一定要记住(或熟练导出)一表

    十进制 十六进制 二进制
    0 0 0
    1 1 1
    2 2 10
    3 3 11
    4 4 100
    5 5 101
    6 6 110
    7 7 111
    8 8 1000
    9 9 1001
    10 A 1010
    11 B 1011
    12 C 1100
    13 D 1101
    14 E 1110
    15 F 1111

         把这个表写出来其实很简单,只需要记住十进制与二进制的转换即可,我们知道从右到左二进制的权值为2的幂次方,即1,2,4,8,16,那么对于十进制数13来说,转换为二进制数就可以看做是8+4+0+1即四位二进制最高位8为1,第二位为1,第三位为0,第四位为1,那么就是1101。对于4来说,直接100即可。所以此表就已经熟记于心了。

     

    二、转换过程

    十六进制 十进制 二进制补码
        0110
      -27  

    识别正负数(有符号无符号数)技巧:

    •   对于十进制数的识别我们从小就知道,有负号就为负数
    • 对于二进制的识别,符号位即最高位为1(左边第一位)就为负数,反之为正数
    • 对于十六进制来说,如果左边第一位在[1,7],那么为正数(这个很好理解,因为十六进制和二进制随意转换,那么我们知道对于四位二进制来说,1~7最高位均为0,到8之后最高位就是1了),反之为负数。

    (1)我们知道二进制补码0110,一看就知道是正数,那么二进制和十六进制是直接转换的,所以就有十六进制的数为6,那么十进制的数也是6。

    (2)我们知道十进制数-27,首先我们用方法二将它取绝对值27,然后求27的十六进制数为1B(小技巧就是27=16+11,所以第一位为1,第二位就直接为B)。用十六进制100减去1B(这里也可以用10000字长,但100长度也就够了的)得到十六进制为E5,之后十六进制和二进制直接转换,那么就为1110 0101。

    答案:

    十六进制 十进制 二进制补码
    6 6 0110
    1B -27 1110 0101

     

    三、转换原理总结:

         方法二用某个适当的2的幂的数作为减数(例如上面的十六进制100)减去负数的绝对值的十六进制数就得到了该有符号数的十六进制。因为任何时候对一个数求二进制补码,得到结果再对该结果求其二进制码就得到原数。用长度为字的数N表示有:

    N = 10000 - (10000 - N)

         所以我们将负数取绝对值在用100减的时候,其实得到的十六进制数就是该负数的二进制补码数。

         如果我这样解释为什么可以这样计算负数的补码,你一定一头雾水,因为它仿佛只是告诉你一个结论,没有起因,也没有任何的中间过程。你所知道的手动计算负数的补码,无非就是让十六进制100减去这个数的绝对值。但why???

         首先我们理解一个原则,计算机肯定是为人类服务的,所以它内部的思想当然也是我们先有的思想,才想到如何在计算机内部实现,其次我们要理解,计算机肯定和数学密切相关的。那么我说这个话有什么用呢?我们慢慢看:

         上面说计算机大佬们的方法就是用10000减去负数绝对值从而得到二进制补码(当然,这里的负数绝对值和10000当然是十六进制啦)。如果你尝试使用原码、反码、补码的方式来解释这个方式,那你就走错方向了,因为我们总是先有前一个方式,才在计算机内部用反码的形式来求解(毕竟内部元件直接异或运算)。那在绝对值,加加减减的过程中,可能你会回忆起小学的补数操作,因为相加为最大数的两个数互为补数(小学的10、100等10^n),那么你想一下,相加为100000的两个数,如果互为补数(姑且那么说),那么我是不是可以直接这样去思考呢?当然是的!

         在密码学的时候接触到了“模”的概念,例如:钟表是有12个刻度的,现在是7点,我想将它减小到3点钟,你肯定有两个方法:一是你直接逆时针转动4个刻度到达3点(几乎所有人都会那么做吧);二就是顺时针转动8个刻度,也可以到3点钟。这里12就是模,也就是说7-3=4等价于12-4=8。这个时候你可能有了一点概念,那我们再来一个例子,例如90-10和90+90(相当于90+(100-10)))如果不考虑100进位的话,其实他们都是等价于80的,模就是100;对于10-80和10+(100-80)来说,不考虑100进位那么就是-70和30,显然两者不是一回事,于是圣贤们就想出用一半表示正数,一半表示负数的方式,也就是说,我们将100分为两份,一份为0~49,另一份为50~99(它其实表示的是-49~-1,注意这里有大小对应关系,即99代表-1),也就是98就是-2。是不是和我们的二进制表示一样,只是不同的是,老师会告诉我们最高位是符号位,表示正负,例如8位二进制有1000 0001即129,也可以看做是二进制补码表示的-1。

         那么上面我们看到互为补数的数在模的范围内做减法,可以将“X-Y”的减法运算变为“X+Y的补数”的加法运算

         我们回到计算机的二进制数、十六进制数来看,如果想要表示负数,那么我们可以表示为负数绝对值的补码形式。在这里,我们的10000其实就是相当于模(它是2的n次幂,相当于能够表达的最大的数值),而我们的运算肯定是在模的范围内,那么就可以看做是上面互为补数的数在模的氛围内是可以有负数变为绝对值补码形式的。为什么说10000相当于模呢,我们从上面隐约知道,模就是最大的(近似这么看),例如时钟的模就是12。0到100的数模就是100,那么对于计算机来说,模肯定就是2的n次幂,那么到底是多少呢?

         例如,8位二进制数一共可以表示2^8次方==256个数,即256就是8位二进制的模。照这么说,我们对于256之间的数的减法就可以看成是加上绝对值补数的加法。可是我们8位不是全部表示正数的,我们需要分出一半来表示负数,那么0~127就是128个数来表示正数,而-128~-1就表示负数部分。绝对不可以超过这个数字,否则8位的运算就溢出了,计算机内部会进行溢出的异或运算检测。

         那么我们来计算一下-128的补码,不就是256-|-128| = 128,而128的二进制不就是1000 0000。结合一下最初提出的十六进制的10000来计算,其实很好理解的,因为我们的模不都是2^n次幂吗?例如8位二进制的模就是2^8次幂==256,它的十六进制表示不就是100吗?而其它的位数进制的模也都是10000(后面根据位数进行添0操作,例如8位可以表示两个16进制数嘛,那100不就是最大的数值嘛,其实不够就在1后面添加0就好)。

         现在回到我们上面的例子,总结一下不就是一句话吗?——负数的表达方式就是它绝对值的补数。

         因为计算机内部不可以进行绝对值等运算,所以我们才使用原码、反码、加一的操作来达到我们上面算法的结果。就是我们手动计算十进制-27的时候,可以直接对它绝对值的十六进制求补码。而计算机内部是这样的:首先-27的原码是1001 1011,然后除符号位之外都01置换,即得到11100100,然后加一得到1110 0101。和上面我们手算的一对比,一样的对吧。

         当然有些老师求负数补码也有自己的技巧,例如对于-27来说,得到27的原码有0001 1011,之后从右往左除第一个遇到的1不变之外,其它都取反,也可以得到-27的补码,即1110 0101。但是它们的原理其实都是计算机大佬的负数的表达方式就是绝对值的补数的这个概念。对于10进制的说来说,我们总是熟悉10、100补数,对于2进制的数来说,我们也要熟悉十六进制的100、10000等模的概念。

     

         

    总结:

         第三次修改之后这个就是最后的版本了,希望你能够理解补码的表示形式,对于我们计算来说它是一回事,对于计算机内部来说,又是另一回事。但是不得不说,补码的形式真的很好用,果然计算机大佬就是多呀。

     

    小问题:

         发了文章之后,有人问为什么二进制负数能够表示的范围的绝对值总是比正数多一,其实这个也不是什么困难的事情。这里我就举一个8位二进制的例子,我们都知道它能够表示的范围是-128~-1,0~127。因为我们上面说过,8位可以表示256个数,为了能够表示负数,所以我们各取一半来表示正负数,即正数表示为0~127,而负数不就是-128~-1吗?

         在计算机内部,-1不就是对应1111 1111,它的真值不正是255吗?和我们上面所解释的原理是一致的。至于-128那么在计算机内部肯定是表示1000 0000啦。

         希望对你们有所帮助,有问题可以在讨论区一起讨论哦~

    展开全文
  • matlab实现十进制二进制定点有符号补码小数的转换,其中定点小数的整数部分位长和小数部分位长可以自己指定,输出的最高位表示符号位(0为整数,1为负数),补码表示
  • 1.对一个二进制数1100111111000111 转化为十进制是多少? 如果最高位是符号转换十进制为-12345,而如果最高位不是符号位则为53191 如何怎么判断1100111111000111最高位是否是符号位呢? 不能判断 数据本无型,...

     

    1.对一个二进制数 1100 1111 1100 0111  转化为十进制是多少?

    如果最高位是符号位转换成十进制为 -12345, 而如果最高位不是符号位则为 53191

    如何怎么判断1100 1111 1100 0111最高位是否是符号位呢?

    不能判断 数据本无型,原本在人心.你想把它当做有符号就有符号,你想把它当做无符号就是无符号.它本身并没有类型区别.

     

    2.对于 _ _ _ _  _ _ _ _ 八个bit表示的数

    你认为它是无符号的,那么它可以表示0~255共计256个数字

    你认为它是有符号的,那么它只能表示-128~127共计256个数字

     

    3.计算机中存储的都是二进制  

    bit(位):b,也称为比特(bit),每个二进制数字0或1就是一个位(bit).     8b(bit)=1B(byte 字节)

    对于上面的问题,我们在使用前必须明确是否有符号位。

    在Java中所有的数据类型都是有符号类型。其他语言有无符号位的类型

    int数据类型占4个byte(字节) 最高位是符号位

    00000000 00000000 00000000 00000000    -2^31~2^31

     

    正数的原码、反码、补码都一样

    负数的反码 =  它的原码符号位不变,其他位取反(0 ->1 ; 1->0 );

    负数的补码 = 它的反码 +1;

    在计算机运算的时候,都是以补码的方式来运算的(符号为也运算);

     

     

    展开全文
  • 十六进制格式的带符号二进制十进制计算方法`~` 操作符转换演示正确转换方式 这个问题必须记录一下,我以为转换就是直接按位取反,但是结果总是不对,经过分析后才发现数据分析就问题,那当然接下来怎么做都不会...

    十六进制格式的带符号二进制转十进制

    这个问题必须记录一下,我以为转换就是直接按位取反,但是结果总是不对,经过分析后才发现数据分析就有问题,那当然接下来怎么做都不会对了

    计算方法

    我们先演示流程并获取结果:

    1. 0xFFF8 转 二进制:1111 1111 1111 1000 ,这是带符号的二进制数据,首位为 1 ,因此是负数;
    2. 负数是用补码表示的,补码是原码取反+1,也就是说需要先减 1 得到:1111 1111 1111 0111
    3. 取反得到:0000 0000 0000 0000 1000,转10进制就是8,加上符号就是 -8,没错,这就是我想要的结果。

    ~ 操作符转换演示

    $a = 0xFFF8;
    $ret = ~$a;
    var_dump($ret); // 输出:-65529
    

    结果和我想要的不一样啊,那来捋一下 ~ 操作符的计算流程,我们用简单的值演示一下:

    1. 0x0005 转 二进制:0000 0000 0000 0101
    2. 取反得到:1111 1111 1111 1010, 观察取反后的结果,从左向右看,第一位 0正1负;
    3. 负数是用补码表示的,补码是除符号位外按位取反+1,也就是说 1111 1111 1111 1010 是某个数取反+1得到的,反过来,也就是先 -1,结果是:1111 1111 1111 1001
    4. 取反得到: 1000 0000 0000 0110,转10进制就是-6

    看过上面的流程就可以发现啦,一直以为0xFFF8是原数,所以就作按位取反,当然结果一直不对,因为转换方式和数据分析 都是错的,数据是从硬件内存中取出直接上传的,而负数在内存中以补码形式存在,因此数据已经是补码了,再按位取反当然就不对了。

    正确转换方式

    $a = 0xFFF8;
    $ret = $a - 0xFFFF - 1;
    
    var_dump($ret); // 输出:-8
    

    没错,就是这么简单!当然,这个是针对 2字节的数据的,如果是4字节,将 0xFFFF 改为 0xFFFFFFFF 就可以啦~

    当然,以上纯粹针对小白。。。

    展开全文
  • 计算机中二进制的计算均是用补码计算的,我们平时所说的二进制通常也是补码,需要注意二进制首位字符为符号位。以下是对这些概念的理解 原码:一个整数,转换二进制数,称为原码; 如:①一个整数,其数值为9...

            在讲进制之间的转换之前,先引入几个概念:原码、反码、补码。在计算正数的时候原码=反码=补码,所以我认为只要在计算负数时反码和补码的概念才有真正的意义。计算机中二进制的计算均是用补码计算的,我们平时所说的二进制通常也是补码,需要注意二进制首位字符为符号位。以下是对这些概念的理解

    原码:一个整数,转换成二进制数,称为原码;

    如:①有一个整数,其数值为9,转换成二进制得到00001001,则其中原码为00001001;

      ②有一个整数,其数值为-9,转换成二进制得到10001001,则其中原码为10001001;

    反码:将原码按位取反,得到的新的二进制数,称为反码;

    如:①正数的反码等于原码,则数值9的反码为00001001。

      ②将10001001符号位不变,其他数值按位取反,得到新的二进制数11110110,即为其反码,则数值-9的反码为11110110

    补码:反码加1,得到的二进制数,称为补码;

    如:①正数的补码等于原码,则数值9的补码为00001001。

      ②二进制数值11110110加1,得到11110111,即为其补码,则数值-9的补码为11110110

    一、十进制转二进制

        1、数值为正数时;

    用该正数,递归除2,直到商等于0停止,倒序取余数,高位不足补0;

    以十进制55为例:

        最终得到的二进制数为  11 0111 ,高位补0最终得到  0011 0111;

        2、数值为负数时;

    以十进制-55为例:

      ① 取得该数值的绝对值为55,原码为0011 0111,则-55的原码 = -0011 0111 = 1011 0111

      ② 取 1011 0111 反码得到 1100 1000

      ③ 取 1100 1000 补码得到 1100 1001

    则-55转换成的二进制数值为 1100 1001

    二、二进制转十进制

           二进制数首位字符为符号位,0表示正,1表示负

        1、二进制数值首位为0

          二进制数值位数从后往前,依次计算第n位上数字乘以2的n-1次幂,所得到的和即为十进制数字;

          以 0011 0111 为例:

          1*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 1*2^5  =  1 + 2 + 4 + 16 + 32 = 55

          则最终的结果是55

         2、二进制数值首位为1

          二进制首位为1则表示次二进制数值为负数,根据十进制转二进制的规则逆推即可;

          以 1100 1001 为例:

            ① 1100 1001 减1 得到 1100 1000

            ② 取1100 1000 反码得到 1011 0111

            ③ 将1011 0111 转化成十进制为-55

          则最终得到结果为 -55

    转载于:https://www.cnblogs.com/ztnn/p/8870484.html

    展开全文
  • 用16位二进制数表示一个十进制数字,最高位是符号位(1表示负数,并且负数用补码表示)。编程实现:输入一个十进制数字,计算输出以英文逗号(,)分割的该数字的16位二进制字符串(不足16位时,前面补0)和4位十六...
  • 在计算机编程过程中,各种进制的转换很多,二进制转为十进制在C语言中有强制转换的方式。在CAN报文解析的时候,从数据中取出的二进制端,长度可能不是正好一个字节,这个时候如果要求数据是有符号的,需要单独写程序...
  • 十进制(整数)转换二进制(8位):正(+):0,负(-):1 十进制(小数)转换二进制(8位): 原码:首位是符号位,其余的n-1位表示数值的绝对值,数位不够用0补足。数值0的原码两种形式:[+0] 原=...
  • 计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,”正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过是我们绝大多数人生来具有10个手指头这个解剖学事实的结果。尽管在历史上...
  • 有符号十六进制转换十进制

    千次阅读 2013-11-18 16:49:16
    就是把十六进制转成二进制补码求 然后在把二进制转成十进制 FBH最后的H表示的是16进制数 FB转成二进制就是 1111 1011 取反加1就是 1000 0101就是-5了 其中第一位不用取反了 ,因为是负数
  • 十进制有符号十进制 --> 二进制有符号十进制 --> 十六进制有符号十六进制 --> 十进制二进制减法X86处理器构架一般概念 进制转换 补码表示 负整数用补码表示时,使用的数学原理是:一个整数的补码是其...
  • 题目难度:★☆☆☆☆类型:数学颠倒给定的 32 位无符号整数的二进制位。提示:请注意,在某些...在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 2 中,输入表示有符号整数 -3,输出...
  • 数制+进制转换+补码

    2020-08-23 23:05:14
    字符的存储:二、进制及转换十进制: DEC( decimal)转换二进制: BIN(binary)转换:十六进制:HEX( hexadecimal )转换:八进制:OCT( octal )(Q)BCD码: 一、数制 1.即:用一组固定的符号和统一的规则来表示数值的方法...
  • 十进制转换二进制

    2018-04-19 20:57:14
    问题 B: Hz的进制时间限制: 1 Sec 内存限制: 128 MB提交: 20 解决: 14[提交][状态][讨论版]题目描述Hz遇到一个数学问题,想请教聪明的你:给定一个有符号整数类型的数,Hz想知道该数二进制表示中1的个数。...
  • 1.常量在程序执行的过程中,其值不发生改变的量。分类:(1) 字面值常量字符串常量:用双引号括起来内容...常量的表现形式Java针对整数常量提供了4种表现形式:二进制 八进制 十进制 十六进制3.进制的概述:进制...
  • 计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码补码=反码+1。在 二进制里,是用 0 和 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。  以负数-5为例:  &...
  • 1.常量在程序执行的过程中,其值不发生改变的量。分类:(1) 字面值常量字符串常量:用双引号括起来内容...常量的表现形式Java针对整数常量提供了4种表现形式:二进制 八进制 十进制 十六进制3.进制的概述:进制...
  • 计算机以二进制补码的形式保存所有正数: 正数的原码反码补码都相同; 负数的补码是其反码加一。 计算机底层都以补码的形式来存储数据。 十进制——>二进制:除2取余的逆。 二进制——>十进制:乘以2的幂数。 ...
  • 进制转换符号表为[0-9a-zA-Z],共61个字符,最大可表示62进制。...正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换十进制...
  • 进制转换 二进制—>八进制 从右向左分组,每三位二进制按权展开,不足时用0补充。 如:001 010 001—>226—>0226 二进制—>...从右向左分组,每四位...原码:数的二进制表示形式,以8位为例,高位表示符号
  • 有符号二进制数的乘法

    万次阅读 多人点赞 2017-01-07 12:19:07
    最近在阅读《深入理解计算机系统》讲到补码...如果直接算出来十进制是-9然后转换为6为二进制我也能理解,但是我很好奇他利用了什么规则得出这样的结果。 根据结果推过程我认为计算机做计算都要按照正数或者说无符号
  • 但是其表示的十进制数需要将补码转换为原码再进行计算。 2.如果是正数,那么原码,反码和补码三个相同,比如补码0111,对应的反码和原码都是0111 3.如果是负数,那么补码转原码和原码转补码的规则一样:符号位1先...
  • 由来原码: 所谓原码就是机器数,是加了一位符号位的二进制数(因为数值正负之分),正数符号位为0,负数符号位为1...求原码的方法: 正数:将一个十进制正整数转换二进制数(带符号位), 即是这个数的原码.负数:先计算该...
  • 在学习原码, 反码和补码之前,我认为必要先讲解一下机器数与真值的概念。...比如,十进制中的数 +3 ,计算机字长为8位,转换二进制就是00000011。如果是 -3 ,就是 10000011 。这里的 0000001...
  • 正确的做法是:考虑好按照16位(short)还是32位(int)抑或64位(long long),先求出二进制补码(这时候就正负数就统一了),将二进制数转换十进制后在转换为其他进制(如果小伙伴知道如何直接将二进制转换为任意进制...
  • 计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码补码=反码+1。在二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。以java中8位的byte为例,最大值为:...
  • 进制之间的转换

    2016-06-09 20:55:00
    十六进制转换十进制,是先把十六进制转成二进制然后再转成十进制,一个十六进制位是4位二进制位, 十进制转为二进制十进制小数转成二进制: 十六进制的转换 关系对照表 ...
  • 进制 二进制十进制 相互转换 十进制 和 十六进制 相互转换 原码,反码,补码原码、反码、补码:在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 进行的.注意: 正数 的原码, ...
  • 所以欲把计算机存储的二进制转换为相应的十进制数值的一般步骤是:1)先看这个数是有符号数还是无符号数,若是无符号/正数,则直接转化为十进制;2)若为负数,则存储的是补码,最高位不变,-1得到其反码,然后最高...
  • Java整数转换二进制

    2014-09-18 17:44:10
    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码补码=反码+1。 在二进制里,是用0和1来表示正负的,最高位为符号位,最高位为1代表负数,最高位为0代表正数。 以java中8位的byte为例,最大...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 215
精华内容 86
关键字:

二进制补码转换有符号十进制