精华内容
下载资源
问答
  • 题目:输入个整数,输出该数二进制表示中1的个数。其中负数用补码表示 收获: 1.由负数的补码求他的绝对值补码:负二进制数的绝对值,只要各位(包括符号位)取反,再加1,就得到其绝对值。 2.负数正码取反...

    题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示
    收获:
    1.由负数的补码求他的绝对值补码:负二进制数的绝对值,只要各位(包括符号位)取反,再加1,就得到其绝对值。
    2.负数正码取反(不包括符号位)+1即得到补码表示
    3.JS中求二进制,(number).toString(2),负数和正数表示除了符号外相同。如(-123).toString(2) == ‘-1111011’, (123).toString(2) == ‘1111011’
    原创:4.想得到负数n的二进制表示即补码, 对(Array(32).join(“0”)+(-n-1).toString(2)).slice(-32)按位取反;想得到正数n的二进制表示,(Array(32).join(“0”)+n.toString(2)).slice(-32)即可,不用按位取反。

    参考资料:
    详解正反补码:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/computercode.html
    JS二进制运算http://www.cnblogs.com/ecalf/archive/2012/11/26/2789870.html

    function NumberOf1(n)
    {
        // write code here
        //-123的二进制表示为-1111011,123的为1111011,因此首先要得到负数二进制的补码表示
        //其后面部分的补码0000101 = 122的正码1111011按位取反,
        //这个正码加上前面的0即是再全部按位取反即得-123的补码表示
        if(n < 0){
            n = -n;
            n = n-1;
            var str = (Array(32).join("0")+n.toString(2)).slice(-32);
            str = exchange(str);
        }else{
            var str = (Array(32).join("0")+n.toString(2)).slice(-32);
        }
    
        return cal(str);
    }
    //计算1的个数
    function cal(str){
        var sum = 0;
        for(var i = 0; i < str.length; i++){
            if(str[i] == 1){
                sum ++;
            }
        }
        return sum;
    }
    //如果是负数,0变1,1变0
    function exchange(str){
        var arr = str.split('');
        for(var i = 0; i < arr.length; i++){
            if(arr[i] == 0){
                arr[i] = 1;
            }else {
                arr[i] = 0;
            }
        }
        str = arr.join("");
        return str;
    }
    展开全文
  • 二进制数的表示模式

    2019-08-25 17:56:08
    无符号数:二进制的每位都代表对应位的数值。 有符号数:在有符号数中规定最高位来表示数据符号,其中1代表,0代表正。 真值:把带符号位的机器数所对应的真正数值成为机器数的真值,例如:00100001的真值为33...

    计算机中的二进制机器数分为:有符号数和无符号数。

    无符号数:二进制的每一位都代表对应位的数值。

    有符号数:在有符号数中规定最高位来表示数据符号,其中1代表负,0代表正。

    真值:把带符号位的机器数所对应的真正数值成为机器数的真值,例如:00100001的真值为33,10100011的真值为-35

    字长:计算机一次可处理的二进制数的码位长度。字长越长代表计算机的处理能力越强,例如在8位的子长中,因为高位要用于符号位,所以处理的数值大小位2的7次方-1.

    二进制数的四种表现形式:

    源码:在二进制数中用第一位(最高位)来表示符号,1 为正,0为负。例如:00000011 代表 +3 ,10000011 代表 -3.

    补码:解决源码的异号相加减的问题,正数的补码和源码相同,负数的补码是通过先把除符号位外其他位取反,再在末尾(最低位)加1。优点:可以把符号位一起运算,0只有一种表示形式,没有二义性。

    反码:对二进制负数按位(除符号位)取反。正数的反码和源码相同。

    移码:是一种特殊的二进制表示形式,1.正数的符号位为1,负数的符号位为0。2.真值部分与补码一样。移码:先求出它的补码,然后再把符号位取反。或者[x]移码=2的n次方(n为二进制的位数,不包括符号位)的二进制+x ,例如:[-11010]移码 = 2的五次方+ (-11010)

    展开全文
  • 今天刷题突然想到负数怎么转为二进制(补码)的问题 @Test public void toBinary(){ int a = -3; StringBuffer str = new StringBuffer(); for (int i = 0; i < 32; i++) { // 0x80000000 是个首...

    今天刷题突然想到负数怎么转为二进制(补码)的问题

    	@Test
    	public void toBinary(){
    		int a = -3;
    		StringBuffer str = new StringBuffer();
    		for (int i = 0; i < 32; i++)
    		{
    			// 0x80000000 是一个首位为1,其余位数为0的整数
    			int t = (a & 0x80000000 >>> i) >>> (31 - i);
    			str.append(t);
    		}
    		System.out.println(str);
    
    	}
    
    展开全文
  • 二进制表示浮点数Prerequisite: Number systems 先决条件: 数字系统 We all very well know that very small and very large numbers in the decimal number system are represented using scientific notation ...

    二进制表示浮点数

    Prerequisite: Number systems

    先决条件: 数字系统

    We all very well know that very small and very large numbers in the decimal number system are represented using scientific notation form by stating a number (mantissa) and an exponent in the power of 10. Some of the examples are 6.27 * 10-27 and 5.21 * 1034. Similarly, Binary numbers can also be represented in the same form by stating a number (mantissa) and an exponent of 2. The format of this representation will be different for different machines.

    众所周知,十进制数系统中的非常小和非常大的数字都是用科学计数形式表示的,即数字( 尾数 )和幂为10的指数。 一些示例是6.27 * 10 -27和5.21 * 10 34 。 类似地,二进制数字也可以通过表示数字( 尾数 )和2的指数来以相同的形式表示。 对于不同的机器,此表示形式的格式将有所不同。

    The 16-bit machine consists of 10 bits as the mantissa and 6 bits for the exponent part whereas 24-bit machine consists of 15 bits for mantissa and 9 bits for exponent.

    16位机器由10位尾数组成, 指数部分为6位,而24位机器由尾数15位组成, 指数部分为9位。

    Format of the 16-bit machine can be represented as:

    16位计算机的格式可以表示为:

    Mantissa PartExponent Part
    0110011010101010
    尾数部分 指数部分
    0110011010 101010

    The mantissa is written in 2's complement form, so the MSB of the Mantissa can be thought of as a sign bit. The binary point is assumed to be to the right of this sign bit. The 6-bit of the exponent can be used to represent 0 to 63, however, to express negative exponents a number (32)10 or (100000)2 is added to the desired exponent.

    尾数以2的补码形式编写,因此可以将尾数MSB视为符号位。 假定二进制点在该符号位的右边。 指数的6位可用于表示0到63 ,但是,要表示负指数,则将数字(32) 10(100000) 2添加到所需的指数。

    Excess-32 Representation: This is a common system to represent floating-point numbers. In this notation, to represent a negative exponent, we add (32)10 to the given exponent which are given by the 6 bits.

    Excess-32表示法 :这是表示浮点数的通用系统。 在这种表示法中,为了表示负指数,我们将(32) 10加到由6位给出的给定指数上。

    Given table illustrates representation of exponent part.

    给定的表说明了指数部分的表示。

    Desired Exponent 2's complement notation Excess-32 notation (in 6 bits) Binary representation
    -32 100000 100000 +100000 = 000000 000000
    -31 100001 100001 +100000 = 000001 000001
    -30 100010 100010 +100000 = 000010 000010
    -15 110001 110001 +100000 = 010001 010001
    0 000000 000000 +100000 = 100000 100000
    +1 000001 000001 +100000 = 100001 100001
    +15 001111 001111 +100000 = 101111 101111
    +30 011110 011110 +100000 = 111110 111110
    +31 011111 011111 +100000 = 111111 111111
    期望指数 2的补码表示法 多余的32位表示法(6位) 二进制表示
    -32 100000 100000 +100000 = 000000 000000
    -31 100001 100001 +100000 = 000001 000001
    -30 100010 100010 +100000 = 000010 000010
    -15 110001 110001 +100000 = 010001 010001
    0 000000 000000 +100000 = 100000 100000
    +1 000001 000001 +100000 = 100001 100001
    +15 001111 001111 +100000 = 101111 101111
    +30 011110 011110 +100000 = 111110 111110
    +31 011111 011111 +100000 = 111111 111111
    Mantissa PartExponent Part
    0110011010101010
    尾数部分 指数部分
    0110011010 101010

    As given above, the floating-point number given in the above format is:

    如上所述,以上述格式给出的浮点数为:

    At the extreme left (MSB) is the sign-bit '0', which represents it is a positive number. Also, just after the sign-bit, we assume a binary point. Thus,

    最左端( MSB )是符号位“ 0” ,表示它是一个正数。 同样,在符号位之后,我们假设一个二进制点。 从而,

        In Mantissa Part: .110011010
        In Exponent Part:  101010, In Excess-32 notation,32 is already added. So
        Subtracting 100000   001010 (i.e.,10 in decimal, so exponent part is 210)
        The number is N
            = +(.110011010)2 * 210
            = +(1100110100.00)
            = +(820)10
    
    

    Example 1: Express the following decimal number into 16-bit floating point number (45365.125)10

    示例1:将以下十进制数表示为16位浮点数(45365.125) 10

    Solution:

    解:

        Binary equivalent of (45365.125)10: 1011000100110101.001
        Binary format: .1011000100110101 * 216
        Mantissa: + .101100010
        Exponent: 010000 (Value of exponent is 16)
        Equivalent exponent: 010000 + 100000 = 110000
    
    

    Since the number is a positive number an additional sign-bit '0' is added in the MSB.

    由于该数字为正数,因此在MSB中添加了一个附加符号位“ 0”。

    So, the floating-point format will be 0101100010110000

    因此,浮点格式将为0101100010110000

    Example 2: What floating point number do the given number 0100101001101011 represents?

    示例2:给定的数字0100101001101011代表什么浮点数?

    Solution:

    解:

    At the extreme left (MSB) is the sign-bit '0' which represents it is a positive number. Also, just after the sign-bit we assume a binary point. Thus,

    最左边(MSB)是符号位“ 0”,表示它是一个正数。 同样,在符号位之后,我们假设一个二进制点。 从而,

        In Mantissa Part: .100101001
        In Exponent Part: 10101, In Excess-32 notation,32 is already added. So
        Subtracting 100000 001011 (i.e.,11 in decimal, so exponent part is 211)
        The number is N 
            = +(.100101001)2 * 211
            = +(10010100100.0)
            = +(1188)10
    
    

    翻译自: https://www.includehelp.com/basics/floating-point-representation-of-binary-numbers.aspx

    二进制表示浮点数

    展开全文
  • 二进制中正负数表示和判断

    千次阅读 2017-03-07 22:32:50
    1代表我知道,但是给你二进制的数比如101 那么转化成十进制应该是多少? 5? 但不是说首位为1应该是的吗???  谁能给我讲讲这个首位什么时候作为符号,什么时候作为数字去计算?什么时候可以直接计算...
  • 数据的二进制表示

    千次阅读 2020-02-05 17:07:43
    数据的二进制表示 文章目录数据的二进制表示基础定义二进制 基础定义 位: IC 电子元件有不同种形状,但是其内部的组成单元称为个个的引脚。只有直流电压0V 或 5V 两个状态。与 “0” 与“1”的表达不谋而合 字节...
  • 使用二进制补码表示二进制负数方法合理性的证明 目录 使用二进制补码表示二进制负数方法合理性的证明 二进制补码的定义 补码与反码的关系 定理 1 计算机中二进制负数 定理2 注释 二进制补码的定义...
  • 负二进制表示法——“奋斗杯”编程大赛题目

    千次阅读 热门讨论 2020-11-01 00:06:29
    负二进制表示法-“奋斗杯”编程大赛题目0、题目1、思考1.1 先试个简单的值 161.2 再试一下题干中的值31.3 试一下特殊值-132 代码实现 0、题目 计算机里的数都是二进制表示,其实还有负二进制表示法,都不需要...
  • 二进制数的表示方法

    千次阅读 2020-11-20 16:42:18
    机器数最高为符号位,0正1。 X=-0.1011,[X]原=11011 ,小数点默认在符号位之后,书写时将其省略。 补码 [X]补=[X]原(X>0) [X]补=[X]原除符号位取反加1(X<0) [+0]补=[-0]补=0.0000 补码加法运算 补码...
  • 负数的二进制表示

    2016-12-08 15:05:58
    负数的二进制表示 -20 是 20 的 二进制表示取反加一。 20的二进制表示为0010100。 0010100取反1101011 加一 得到 1101100。
  • 浮点数二进制表示

    千次阅读 2014-10-10 19:23:15
    上面这条命令,声明了个整数变量,类型为int,值为9(二进制写法为1001)。普通的32位计算机,用4个字节表示int变量,所以9就被保存为00000000 00000000 00000000 00001001,写成16进制就是0x00000009。 那么,...
  • Java负数二进制表示

    2019-10-19 20:12:24
    在Java中整数的二进制表示方法为先将负数的相应正数用二进制表示,之后对二进制取反,最后对二进制数加即为最后结果 案例: -5转换过程: 5的二进制表示为00000000,00000000,000000000,00000101 先取反为:...
  • -128的二进制怎么表示

    万次阅读 多人点赞 2019-03-28 14:51:08
    -128的二进制表示     今天看到8位2进制表示的范围是-128-127。原来没有想过为什么是这个范围,仔细想,奇怪呀,-128是怎么表示的。127是1111 1111,而-128为什么是1000 0000呢,这不是-0吗...
  • 二进制负数表示方法

    千次阅读 2018-05-02 12:08:17
    ...原码:个整数按照绝对值大小转换成的二进制数。 反码:原码取反(0,1互换) 补码:反码加一 示例:表示-5的二进制 5的二进制数:101,补零为 00000101 原码:00000101 反码:11111010...
  • 二进制表示

    千次阅读 2020-08-08 15:29:16
    二进制数是数字电路中应用最广泛的种数值表示方法,在逻辑代数中也经常使用。 1、十进制数 在这种计数进位制中,每位用0~9十个数字来表示,所以计数基数是十。超过9的数则需用多位数表示,其中低位数和相邻高位...
  • 题目:输入个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 题目解析:最直观的解法是先判断整数二进制表示中最右边以为是不是1.接着把整数右移位(这边用右移不用除以2,是因为除法运算效率比移位...
  • 二进制:基础、正负数表示、存储与运算

    万次阅读 多人点赞 2018-09-11 11:35:53
    、概述 众所周知,计算机是由各种...所谓二进制表示从0开始,“逢二进”(N进制则逢N进)。比如十进制的0、1、2的二进制表示为0、1 、10。 二、进制转换 网上有很多进制转换的方法,我这里就不多做阐述,只...
  • 二进制和整数间的相互转换算法说明每个二进制串对应个整数,同样每个整数都对应二进制串。但不能说明不同二进制串对应不同整数,即,任两个不同的二进制串是不等的。这个问题有个很简单的证明方法: 假设有...
  • 二进制数的编码表示

    2019-01-13 18:41:42
    首先,对于个有符号数,最高位是...二进制编码的实质其实是对负数的编码,因为正数的原码、反码、补码都一样。 1.原码 规则:将个数的符号位数字化为0或1. X=+1111111 X原码=01111111 X=-1111111 X原码=11111...
  • 浮点数在电脑中用二进制储存,约定以二进制的科学计数法来进行表示一个浮点数,类比十进制的科学计数法,很容易知道,二进制的科学计数法的首位数字一定为1,然后通过乘以相应的底数为2的指数来得到二进制数,如下...
  • 最近学计算机组成原理,遇到个问题,用有符号八位二进制表示-128。我看到这个题时脸懵逼,不是八位二进制表示的原码和反码范围是-127~128吗?首先,网上的网友,同学以及老师给出了两种说法: 第种:-128...
  • java 负数的二进制表示

    千次阅读 2019-06-26 20:18:04
    JAVA 基础系列 计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码,三种表示方法均有符号位和数值位两部分,符号...第步:将-7的绝对值转化为二进制 0000 0111 第二步:将上面的二进制以反码表...
  • IEEE二进制浮点数的表示

    千次阅读 2006-11-07 17:41:00
    IEEE二进制浮点数的表示是IEEE把Intel设计的两种浮点存储格式规范化后得来。IEEE短实数:32位 1位 符号 8位 指数 23位 尾数 ---------也称之为单精度浮点数IEEE长实数:64位 1位 符号 11位 指数 52位 ...
  • 负数的二进制表示方法

    千次阅读 2017-07-14 10:17:25
    负数的二进制表示方法 假设有个 int 类型的数,值为3,那么,我们知道它在计算机中表示为: 00000000 00000000 00000000 00000011 因为int类型的数占用4字节(32位),所以前面填了堆0。 在计算机中,负数以其...
  • 二进制如何转十进制,十进制如何转二进制

    万次阅读 多人点赞 2018-04-06 17:57:29
    学计算机的朋友刚开始学习时都要接触进制之间的转换,二进制、十进制、八进制、十六进制等,这个是很枯燥的,转来转去就转蒙圈了,别蒙别蒙,今天咱们个搞定,看看二进制和十进制之间如何相互转换的。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,108
精华内容 29,243
关键字:

二进制负一怎么表示