精华内容
下载资源
问答
  • java基础 二进制补码
    2021-02-12 23:25:41

    二进制补码:

    1、计算机系统的内部以二进制形式存储数据。

    2、在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。

    二进制补码的原理:

    正数+负数=模。

    模:某种类型数据的总数,例如:

    4位二进制数的模是2^4=16

    8位二进制数的模是2^8=256

    负数=模-正数,这就是逐位取反加1的原因。

    1、在计算机系统中,数值一律用二进制的补码来存储。

    2、二进制的最高位是符号位,0表示正数,1表示负数。

    3、正数的值是其本身,负数的值是最高位(符号位)不变,其它位逐位取反,再加1。(计算机中正数和负数的关系是取反加一)

    4、两数相加,若最高位(符号位)有进位,则进位被舍弃。

    5、补码运算是封闭的: 运算结果保留在补码范围之内, 超范围就溢出。

    例如: (1101)2

    0010  逐位取反

    0011   加1

    (1101)2=-3

    4位二进制补码最多能表示2^4(16)个数,数的范围是-8~7

    8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127

    更多相关内容
  • 在 MATLAB 中计算符号整数的二进制补码
  • 这些函数像内置的 MATLAB 函数 BIN2DEC 和 DEC2BIN 一样在二进制字符串和十进制数之间进行转换,但可以容纳负整数(通过二进制补码)和分数正负数(通过二进制补码固定点和字符串中的二进制小数点)。 请注意,许多...
  • 二进制补码详解

    2022-03-27 10:29:49
    微处理器用二进制补码系统表示符号整数,因为它可以将减法运算转换为对减数的补数的加法运算,详解如下。

        微处理器用二进制补码系统表示有符号整数,因为它可以将减法运算转换为对减数的补数的加法运算。

    1.什么是二进制补码运算

        我们先引入补数的概念:

    补数:一个数与它的补数之和是一个常数。例如一个一位的十进制数与它的补数之和总是9,2的补数是7,4的补数是5。在n位的二进制算术中,数P的补数Q=2^{n}-Q(即常数是2^{n})。 

        令n位二进制数N的二进制补码定义为2^{n}-N。如果N=5=00000101(8位二进制数),则N的补码为2^{8}-00000101=100000000-00000101=11111011(注意此处11111011用于表示5的补码,不要看成无符号整数)。

        下面看几个例子:

    5:00000101,5的补码:11111001   

    7:00000111,7的补码:11111001

        例1:将7与5的补数相加

    00000111 + 11111011 = 1000000010

        结果为9位二进制数100000010。由于一共只有8位,我们忽略最左边一位,结果为00000010,也就是2。即7与5的补数相加结果为2,效果等同于7-5=2。

        例2:将7的补数与5相加

    11111001+00000101=111111110

        结果为9位二进制数111111110,忽略最左边第九位后结果为11111110,“刚好”是二进制2的补码(2^{8}-00000010=11111110),也就是5-7=-2。

        从上述例子看,在二进制运算中,对于正数N而言,减去N的操作和加上N的补数的操作效果是相同的,也就是说-N等价于N的补数

        那么,为什么要引入补码运算呢? 

    2.用补数的加法代替减法   

        二进制补码算术不是魔术,具体展开看,在n位的二进制算术运算中,我们令Z=X-Y,我们试着用X加上Y的补数来运算,由于Y的补数为2^{n}-Y,所以

    X+Y的补数=X+(2^{n}-Y)=2^{n}+(X-Y)=2^{n}+Z

        换句话说,我们用X加上Y的补数会得到Z加上2^{n},但2^{n}只体现在最左边的第n+1位(如同上述例子中第九位的1),会被丢弃掉。所以此时我们得到了Z=X-Y=X+Y的补数,也就是说,在二进制补码运算中,减去一个数,等同于加上这个数的补码

        到这里,我们可以进一步直接放心地在二进制补码运算中用一个数的补码来表示这个数的负数了,如果不放心,我们还可以证明,对一个数进行两次求补将得到这个数本身:例如

    -5=2^{8}-00000101=11111011

    再次求补:-(-5)=2^{8}-11111011=00000101=5

        我们考虑加法的所有情况,请看下面的实例。令

    X=9=0000101, -X=11110111

    Y=6=00000110, -Y=11111010

        此时有

    X+Y=00000101+00000110=00000111=15

    X-Y=00001001+11111010=100000011=3(红色最高位舍弃)

    -X+Y=11110111+00000110=111111101=-3(3的补码)

     -X-Y=11110111+11111001=111110001=-15(15的补码)

        结合之前所有的论证, 上述所有4中加减法中的情况都正确得到了我们想要的结果,例如将6与9的补码相加完成运算-9+6,得到-3,确实是3的补码。

    3.求补运算

        我们现在可用补码加法来代替减法了,但是,例如N的补码是2^{n}-X,我们求补的操作本身不就是一次减法吗?!别急,补码运算可没这么蠢,求补的运算是非常简单的。我们将表达式2^{n}-X表示为下面的形式:

    2^{2}-X={\color{Blue} 2^{n}-1}-X+1={\color{Blue} {1000...0}-1}-X+1={\color{Blue} 111...1}-X+1

        例如,8位(n=8)时有

    2^{8}-X=100000000-X={\color{Blue} 100000000-1}-X+1 ={\color{Blue} 11111111}-X+1

        表达式111...1-X的值很容易计算。对于X的第i位n_{i},如果n_{i}=0,则1-0=1,同样,若n_{i}

    =1,则1-1=0,很显然,取n_{i} 的反就行了,换句话说计算111...1-X部分的值只需要将X每一位取反。可见计算X的补码非常容易:

    计算数N的补码,所要做的就是将X的每一位取反,然后将取反结果加1。

        例如,对于二进制的6=00000110,6的补码为11111001+1=11111010。

        这种补码运算相对于减法来说,非常适合用硬件实现,效率也很高。

    4.补码的特点

    1. 补码是一个真正的互补系统+X+(-X)=0;
    2. 补码0被表示为00...0,是唯一的;
    3. 补码的最高位为符号位,如果符号位为0,则该数为正;符号位为1,则该数为负;
    4. n位二进制补码数的表示范围为(-2^{n-1})~​(2^{n-1}​​​​​​-1),例如对于n=8,补码的范围为-128~127.共有2^{8}=256个不同的数(128个负数,1个0,127个正数);
    5. 补码加法和减法可以使用同样的硬件完成,因为补码减法由被减数加上减数的补数实现。

     5.运算溢出

         n位二进制补码数的表示范围为 (-2^{n-1})~​(2^{n-1}​​​​​​-1)。如果运算结果位于这个范围之外会发生什么呢?

        我们令5位有符号二进制补码数的表示范围为-16~+15,考虑下面的例子:

        情形1:5+7=00101+00111=01100=12

        情形2:12+13=01100+01101=11001=-7

        在情形1中,我们得到了期望的结果+12,但在情形2中,我们得到的结果是一个负数,因为它的符号位是1,如果将他视作无符号整数,它将是2^{4}+2^{3}+2^{0}=25,但是我们不可能将两种解释应用到一个表示方法中,所以一旦采用了补码表示,那么11001就只能表示-7。

        同样,如果两个负数相加且结果小于-16,也会超出5位二进制补码的表示范围。

        情形3:-9-12=10111+10111=101011

        在情形3中,第六位1舍弃后,结果为正数01011=11。

        这两个例子都说明了什么是运算溢出,它发生在补码加法当两个正数的和为负数,或两个负数的和为正数的时候。也就是说,如果操作数A和操作数B的符号位相同,但结果的符号位与它们不同的时候,则可以判定发生了溢出。

    展开全文
  • 今天一场技术笔试一道编程题难住了我,算出一个十进制数的二进制补码和对应的16进制,由于时间紧张,加上紧张,做的极差,因此mark以下

    十进制转二进制补码

    首先要明确的是:十进制直接转成二进制是转化为二进制原码,正数的原码和补码相同,但负数的原码按位取反末位加一才是补码。
    因此流程图大概如下:
    在这里插入图片描述

    整个代码我贴在最后

    主要逻辑代码:

    public static String convert(int num) {
    		StringBuilder resultString = new StringBuilder();
    		// 初始化补码数组,共12位
    		String[] complementStrings = new String[] { "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" };
    		boolean ifNegative = false;
    		if (num < 0) {
    			complementStrings[0] = "1";
    			num = -num;
    			ifNegative = true;
    		}
    		// 加入到补码的数组中,开头从12-strings.length开始
    		String[] strings = Integer.toString(num, 2).split("");
    		// 对应在strings数组中的下标
    		int j = 0;
    		for (int i = 12 - strings.length; i < 12; i++) {
    			complementStrings[i] = strings[j];
    			j++;
    		}
    		// 如果为负数,先全部取反,否则直接拼接
    		if (ifNegative) {
    			for (int i = 1; i < complementStrings.length; i++) {
    				if (complementStrings[i].equals("1")) {
    					complementStrings[i] = "0";
    				} else {
    					complementStrings[i] = "1";
    				}
    			}
    			// 送进函数加一
    			resultString.append(binaryPlusOne(complementStrings, 11, 1));
    		} else {
    			resultString.append(strings.toString());
    		}
    		return resultString.toString();
    	}
    
    

    重要代码1:末位加一

    为递归算法,递归逻辑为每次将一位执行与进位的加法并拼接,走完整个数组,返回。

    	/**
    	 * 
    	 * @param strings 二进制数数组
    	 * @param temp 对哪一位执行加法
    	 * @param carry 进位值
    	 */
    	private static String binaryPlusOne(String[] strings, int temp, int carry) {
    		if (temp < 0) {
    			StringBuilder tempBuilder = new StringBuilder();
    			for (int i = 0; i < strings.length; i++) {
    				tempBuilder.append(strings[i]);
    			}
    			return tempBuilder.toString();
    		} else {
    			// 计算加上进位后的值
    			int tempInt = Integer.parseInt(strings[temp]) + carry;
    			// 更新对应位置上的值
    			strings[temp] = String.valueOf(tempInt % 2);
    			// 更新进位
    			carry = (tempInt) / 2;
    			// 更新坐标
    			temp--;
    		}
    		return binaryPlusOne(strings, temp, carry);
    	}
    

    二进制转16进制

    同样也是递归的思想,每次将二进制字符串最后四位进行转化,并拼接,知道拼完为止。

    重要代码

    	/**
    	 * 将二进制转为16进制
    	 * 
    	 * @param binaryString
    	 * @param length
    	 * @return
    	 */
    	private static String binaryTo16(String binaryString, int length) {
    		if (length < 4) {
    			return binaryString;
    		}
    		return binaryTo16(binaryString.substring(0, length - 4), length - 4)
    				+ binaryTo16Map.get(binaryString.substring(length - 4, length));
    	}
    

    总体代码,粘了就能用

    输入为一个十进制数(其二进制位数在12位以内)
    输出为 12位二进制补码和二进制补码对应的16进制码的拼接(以分号隔开)

    示例:

    输入:-7
    输出:111111111001;FF9
    
    import java.util.HashMap;
    
    public class BinaryCodeTransfer {
    	public final static int totalNumber = 12;
    	public final static HashMap<String, String> binaryTo16Map = new HashMap<String, String>() {
    		{
    			put("0000", "0");
    			put("0001", "1");
    			put("0010", "2");
    			put("0011", "3");
    			put("0100", "4");
    			put("0101", "5");
    			put("0110", "6");
    			put("0111", "7");
    			put("1000", "8");
    			put("1001", "9");
    			put("1010", "A");
    			put("1011", "B");
    			put("1100", "C");
    			put("1101", "D");
    			put("1110", "E");
    			put("1111", "F");
    		}
    	};
    
    	public static void main(String[] args) {
    		System.out.println(convert(-7));
    	}
    
    	public static String convertToBase72(int num) {
    
    		return Integer.toString(num, 2);
    	}
    
    	public static String convert(int num) {
    		StringBuilder resultString = new StringBuilder();
    		// 初始化补码数组,共12位
    		String[] complementStrings = new String[] { "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0" };
    		boolean ifNegative = false;
    		if (num < 0) {
    			complementStrings[0] = "1";
    			num = -num;
    			ifNegative = true;
    		}
    		// 加入到补码的数组中,开头从12-strings.length开始
    		String[] strings = Integer.toString(num, 2).split("");
    		// 对应在strings数组中的下标
    		int j = 0;
    		for (int i = 12 - strings.length; i < 12; i++) {
    			complementStrings[i] = strings[j];
    			j++;
    		}
    		// 如果为负数,先全部取反,否则直接拼接
    		if (ifNegative) {
    			for (int i = 1; i < complementStrings.length; i++) {
    				if (complementStrings[i].equals("1")) {
    					complementStrings[i] = "0";
    				} else {
    					complementStrings[i] = "1";
    				}
    			}
    			// 送进函数加一
    			resultString.append(binaryPlusOne(complementStrings, 11, 1));
    		} else {
    			resultString.append(strings.toString());
    		}
    
    		// 如果大于零直接求出十六进制,否则,放入16进制处理函数中
    		resultString.append(";").append(binaryTo16(resultString.toString(), 12));
    		return resultString.toString();
    	}
    
    	/**
    	 * 
    	 * @param strings
    	 * @param temp
    	 * @param carry
    	 */
    	private static String binaryPlusOne(String[] strings, int temp, int carry) {
    		if (temp < 0) {
    			StringBuilder tempBuilder = new StringBuilder();
    			for (int i = 0; i < strings.length; i++) {
    				tempBuilder.append(strings[i]);
    			}
    			return tempBuilder.toString();
    		} else {
    			// 计算加上进位后的值
    			int tempInt = Integer.parseInt(strings[temp]) + carry;
    			// 更新对应位置上的值
    			strings[temp] = String.valueOf(tempInt % 2);
    			// 更新进位
    			carry = (tempInt) / 2;
    			// 更新坐标
    			temp--;
    		}
    		return binaryPlusOne(strings, temp, carry);
    	}
    
    	/**
    	 * 将二进制转为16进制
    	 * 
    	 * @param binaryString
    	 * @param length
    	 * @return
    	 */
    	private static String binaryTo16(String binaryString, int length) {
    		if (length < 4) {
    			return binaryString;
    		}
    		return binaryTo16(binaryString.substring(0, length - 4), length - 4)
    				+ binaryTo16Map.get(binaryString.substring(length - 4, length));
    	}
    }
    
    
    展开全文
  • 针对补码这个常见的概念,引申到小数的补码,并且实例说明其运算规则。
  • 二进制补码可以用来表示小数吗?】可以,不过需要你自己来处理.方法是,按照所需要的精度,将该小数放大若干倍,当整数处理.为方便通常放大2的若干次方倍.这样,你就可以把这个整数看成“定点小数”,即保留了若干位二...

    【二进制补码可以用来表示小数吗?】

    可以,不过需要你自己来处理.方法是,按照所需要的精度,将该小数放大若干倍,当整数处理.

    为方便通常放大2的若干次方倍.

    这样,你就可以把这个整数看成“定点小数”,即保留了若干位二进制小数的定点数.

    有些资料上,将这种格式称作Q格式.如“Q8格式”就是保留了8位小数位的定点数.

    这种定点小数,做加减法时,需要小数点对齐,必要时需先做移位操作.

    乘除法时,也要掌握小数点位置.例如“Q8格式”和“Q4格式”的数相乘,其积应该看做“Q12格式”的.

    需注意C语言中的移位操作中,其“右移”分为“算术右移”和“逻辑右移”两种.对于“有符号”数,实行的是“算术右移”,对于“无符号数”,实行的是“逻辑右移”.

    如果您的程序中定义变量类型时定义的正确,那么你这些右移操作就不会错误.

    如果您的程序中有“无符号”和“有符号”混用的地方,或强制类型转换的地方,需要注意这点不要出错.

    “算术右移”和“逻辑右移”的区别:

    “逻辑右移”时最高位一律补零.

    “算术右移”时最高位保持不变,即:负数补1,正数补零.

    例如,用Q4的格式来表示0.75,放大2的4次方倍,为12,

    机器码是0000000000001100

    可以看做是定点小数000000000000.1100

    另,用Q4的格式来表示-0.75,放大2的4次方倍,为-12,

    机器码是1111111111110100

    可以看做是定点小数111111111111.0100

    如上,按Q4格式,用12代表0.75,用-12代表-0.75.

    要做(0.75)×(-0.75)用(12)×(-12)代表,乘得(-144).

    -144的机器码是1111111101110000

    看做Q8格式的定点小数11111111.01110000

    可以代表-0.5625.(等于-144/256,即-9/16)

    假如下面又要做别的运算,需要把这个Q8的定点小数化为Q4格式,那么,可以用>>4的运算,把这个数“算术右移”4位,得111111111111.0111.(这个数,如果当普通整数看,就是-9.)

    请注意这里右移的时候最高位补了4个1.

    【给我一段二进制补码,我怎么将其还原成十进制的数值?】

    首先,要知道其字长.以16位字长为例:

    16位字长如果是无符号数,可以表达的十进制数的范围是0 ~65535;

    如果是有符号数,可以表达的十进制数范围是-32768 ~ +32767.

    这里65536是2的16次方,32768是2的15次方.

    正整数的二进制化十进制想您应该知道吧?例如10010000化为十进制就是

    ((((((1×2+0)×2+0)×2+1)×2+0)×2+0)×2+0)×2+0 = 144

    给你一个有符号数的补码表示法的16位二进制代码,暂时先按照上述无符号数(即正整数)的规则,化为十进制;

    然后,看其符号位(最高二进制位)是否是1:

    如果是0,就表示它是正数.结果就对了.

    如果是1,就表示它应是负数,将此暂时值再减去65536,所得结果(负数)就是应有的结果了.

    上述“看其符号位是否是1”的判断,也可以代之以“看暂时值是否不小于32768”.

    例如:1111111111110111按照上述规则,得暂时值为65527.

    因为符号位是1,说明它应该是负数:65527 - 65536 = -9.

    解析看不懂?求助智能家教解答查看解答

    展开全文
  • 二进制补码运算

    千次阅读 多人点赞 2020-07-23 13:52:43
    二进制负数的在计算机中采用补码的方式表示。很多人很好奇为什么使用补码,直接使用原码表示多好,看上去更加直观和易于计算。然而事实告诉我们,这种直观只是我们人类的一厢情愿罢了,在计算机看来,补码才是它们最...
  • 笔者刚学数字电路,就在二进制补码处踩了许多坑,下面就来写一下我对二进制补码的感悟。 提示:以下是本篇文章正文内容,下面案例可供参考 一、生活中了解补码 首先展示一下求补码的公式N(补)=R^n-N 这里的N是原码...
  • 二进制补码转为十进制整数 package kevin.demo; import java.util.Arrays;import java.util.Scanner;public class Hello { public static void main(String[] args) { Scanner in = new Scanner(System.in); String ...
  • 二进制补码

    2021-10-31 03:31:45
    符号的整数在计算机内部用二进制补码表示。 定义函数to_complement(n, bits),对于给定的一个整数n和一个正整数bits,该函数输出整数 n 的bits位二进制补码表示。 例如: to_complement(5,8)输出00000101 to_...
  • 0代表正数 1 代表负数+1:0000 0001-1:1000 0001+0:0000 0000-0: 1000 0000问题:1.0这个数值在存储的时候,2种存储方式2.正数和负数相加的时候,结果不是我们所算出的结果(在计算机里面,只能做加法运算)1-1 = ...
  • 转载:http://blog.xdnice.com/blog40543i59178.htmlmatlab提供了一个系统函数dec2bin,可以用来进行十进制数的二进制转换,不过功能有限!在matlab中键入 help dec2bin,如下:DEC2BIN Convert decimal integer to a ...
  • 计算机中为什么使用补码呢?主要原因:1、使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个补 码表示的数相加时,如果最高位(符号位)进位,则进位被舍弃。 2、补码与原码的...
  • 浅谈计算机中的二进制补码对于一个整数, 计算机里面是以补码的形式存储的, 我们如果想要理解补码, 需要先理解原码和反码1) 原码正整数的原码就是它的二进制形式10 的原码: 0000 1010负整数的原码, 使用最高位为 1 ...
  • 二进制补码计算原理

    2021-03-11 08:29:04
    二进制的负数在计算机中采用补码的方式表示。很多人很好奇为什么使用补码,直接使用原码表示多好,看上去更加直观和易于计算。然而事实告诉我们,这种直观只是我们人类的一厢情愿罢了,在计算机看来,补码才是它们最...
  • 二进制补码乘法除法 1)二进制乘法 (1) Binary Multiplication) Binary numbers can be multiplied using two methods, 二进制数可以使用两种方法相乘, Paper method: Paper method is similar to multiplication ...
  • 如果知道二进制补码、十六进制或十进制其中一个,需要转换出其它形式,那么也是很简单的。 对于二进制和十六进制直接转换(技巧在于记住1~15的二进制、十六进制转换关系表,熟练于心) 对于无符号数(正数)来说...
  • 二进制补码的理解

    千次阅读 2019-02-13 21:59:51
    正数的原码=反码=补码。 负数的原码、反码、补码关系为:  原码 = 正数的原码符号位变为1,  反码 = 正数的原码取反  补码 = 正数的原码取反加1。  补码主要为了计算机进行减法运算。 参考1:...
  • 二进制补码

    千次阅读 2020-09-14 17:09:50
    虽然知道怎么计算了,但是不知道为什么是这么计算的,那么接下来就来说说二进制补码的原理 三、二进制补码的原理 那大家都知道负数怎么来的,比如:A-B,那A比B小,结果就会是负数,这就很多情况了,咱不讨论,就...
  • 计算机补码的加减法 因为减法可以转化为加法,所以只考虑加法的四种情况。 正 + 正:结果为正,可能发生上溢,结果为负。 负 + 负:结果为负,可能发生下溢,结果为正。 正 - 负:A-B = A+(-B)
  • 二进制补码和十进制数的转换

    千次阅读 2020-04-03 23:24:58
    先考虑如何将二进制补码转换为十进制整数: 若符号位是0, 则该数是正数, 原码等同于补码. 可以由原码(也就是补码)得知代表的正整数. 若符号为是1, 则该数一定是负数, 可按照以下方式转换: 方式一: 先把符号位去掉, ...
  • 补码字符串 :param ori_str:原码字符串 :return:补码字符串 """ # 如果符号位为正,则原码与补码相同 if ori_str[0] == '0': return ori_str elif ori_str[0] == '1': value_str = "" # 数值位按位取反 ...
  • matlab实现十进制到二进制定点符号补码小数的转换,其中定点小数的整数部分位长和小数部分位长可以自己指定,输出的最高位表示符号位(0为整数,1为负数),补码表示
  • 二进制补码计算原理详解

    万次阅读 多人点赞 2018-07-03 17:34:54
    二进制负数的在计算机中采用补码的方式表示。很多人很好奇为什么使用补码,直接使用原码表示多好,看上去更加直观和易于计算。然而事实告诉我们,这种直观只是我们人类的一厢情愿罢了,在计算机看来,补码才是它们最...
  • 最近本人一直在学习ZYNQSOC的使用,目的是应对科研需要,做出通用的算法验证平台。大概思想是:ZYNQPS端负责与MATLAB等上位机数据分析与可视化软件交互:既可传输数据,也能通过上位机配置更新硬件算法模块配置...
  • 二进制补码以及为什么使用补码

    千次阅读 2016-02-19 15:54:18
    补码规则1、在计算机系统中,数值一律用二进制补码来存储。 2、二进制的最高位是符号位,0表示正数,1表示负数。 3、正数的值是其本身,负数的值是最高位(符号位)不变,其它位逐位取反,再加1。 4、两数相加,...
  • 将一个十进制正(负)整数转换为对应的二进制补码(指针完成 十进制转二进制:1.先判断该整数是正数还是负数 如果是正数则二进制补码首位为1 , 且对应的二进制补码就是原. 如果是 负数 则二进制补码为原码基础上取反且...
  • 补码 * 补码 = 补码 无符号数 * 无符号数 无符号数 * 符号数 第四个加数——a先补最高位(0 0001),再连同最高位取反(1 1110)加一(1 1111),最后乘以b的符号位 结果的最高位是符号位 符号数 * 无符号数 ...
  • 要求将文件中二进制补码立即数转为十进制数,写的时候本来想偷个懒找一段,没搜到。 照着一位仁兄的改了改,改成了补码的。 参考: C语言把二进制转换为十进制数的方法和示例 代码如下:注释简单解释了下 #include&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,615
精华内容 29,046
关键字:

二进制补码有什么用