精华内容
下载资源
问答
  • 判断一个二进制数正负

    千次阅读 2013-10-04 18:53:22
    计算机中,用二进制(或者简写成十六进制)表示数,高位为0的为正数,高位为1的是负数。 例如,int a = 0xf48904e, int b = 0xf48904e0, long c = 0Xf80000000L, long d = 0Xf800000000000000L. 其中...

    计算机中,用二进制(或者简写成十六进制)表示数,高位为0的数为正数,高位为1的数是负数。


    例如,int a = 0xf48904e,

    int b = 0xf48904e0,

    long c = 0Xf80000000L,

    long d = 0Xf800000000000000L.

    其中,a和c是正数,b和d是负数


    通过编写程序,很容易判断结果。如果是书面测试,应该注意数的位数。

    int型数据是32位,用十六进制表示应该有8个数字,不足8个数字,实际上是前面补充0,也就是a = 0x0f48904e;

    long型数据是64位,用十六进制表示有16个数字,不足16个数字,前面补0,也就是说c = 0X0000000f80000000L.


    展开全文
  • 1.二进制转化为十进制 ...一把二进制数八位表示,bit8位代表符号 0正 1负 ; 十六进制也是可以使用八位表示例如FFFFFFFF可以表示 -1 在实际的使用中 十六进制的数据可能表示负数; 这个十六进制可能只有

    1.二进制转化为十进制

    二进制数一般转化为十进制数都是直接调用
    Integer.parseInt(hexadecimalStr, 2);
    Long.parseInt(hexadecimalStr, 16);
    直接使用这个方法,就能将数据转化为对应的十进制数,
    但是这个一般只能适用正数

    2.负数二进制、十六进制转化为十进制

    一把二进制数八位表示,bit8位代表符号 0正 1负 ;
    十六进制也是可以使用八位表示例如FFFFFFFF可以表示 -1
    在实际的使用中 十六进制的数据可能表示负数;
    这个十六进制可能只有两位,我们需要判断是不是负数,
    例:一个两位的十六进制的数据可能表示负数;
    FF 此时表示的就是-1
    没有说明这个两位的十六进制的数时;
    FF表示的就是 255

    最近就接触一个串口通信电压是4位的十六进制的表示可能是负数,
    public static int hexadecimal16Conversion(String hexadecimalStr) {
    int getDataDecimal = 0;//转化得到的目标数据
    //16进制代表数据 4位数字
    if (hexadecimalStr.length() == 4) {
    int bit1Num = Integer.parseInt(hexadecimalStr.substring(0, 1), 16);//获取第一位。判断是正数还是负数
    if (bit1Num < 8) { //小于8是正数
    getDataDecimal = Integer.parseInt(hexadecimalStr, 16);
    } else { //负数
    hexadecimalStr = “FFFF” + hexadecimalStr; //先不全八位
    getDataDecimal = new BigInteger(hexadecimalStr, 16).intValue();
    }
    return getDataDecimal;
    }
    return 0;
    }

    如程序 如果这个4位的数据可能表示负数 我们就获取最高位 判断是否大于7 ;大于7说明此时数表示的是负数;

    其他的情况都是一样

    十进制转化为二进制 ,十六精致

    1.String result = Integer.toBinaryString(n);
    直接使用方法调用转化
    2.使用位运算
    public void binaryToDecimal(int n){
    for(int i = 31;i >= 0; i–)
    System.out.print(n >>> i & 1);
    }
    3.十进制转化为16进制的方
    Integer.toHexString(200);

    展开全文
  • 在IEEE754标准下浮点数如何用二进制数表示以及为什么用移码代替补码 一、浮点数用二进制数表示 1、补充:十进制0.4如何转化为二进制数0110 0110(0110循环) float精度有限精确到6~7位 2、、 符号位,位于存储...

    在IEEE754标准下浮点数如何用二进制数表示以及为什么用移码代替补码

    一、浮点数用二进制数表示
    1、补充:十进制数0.4如何转化为二进制数0110 0110(0110循环)
    float精度有限精确到6~7位
    2、、

    在这里插入图片描述

    在这里插入图片描述

    符号位,位于存储浮点数的最高比特位,且只占1比特。0表示正数,1表示负数。通过改变该比特位的值可以改变该浮点数的符号
    指数位
    小数

    十进制数0.1562510 写成二进制的形式为0.001012
    在IEEE 745标准下,我们用三部分来表示一个浮点数:
    sign = 0, 因为该浮点数为正数(用1表示负数);
    真实的指数是-3,但是我们用来存储的指数要在真实的指数上加上偏移量。在单精度浮点数中,这个偏移量是127,在双精度浮点数中这个偏移量是1023;所以我们这里用来存储的指数应该为(-3+127),即124。
    最后结果如上图

    当阶码二进制位不全为0,也不全为1时,N为规格化形式。(小数点左边是1)
    当E的二进制位全部为0时,N为非规格化形式
    当E的二进制位全为1时为特殊数值。

    二、为什么用移码
    移码:补码的符号位取反
    1、容易判断阶码的大小,移码可用于简化浮点数的运算:例如:十进制数21,对应的二进制数为+10101,则其补码为0 10101,十进制数-21,对应的二进制数为-10101,则其补码为101011
    因此,从代码形式看,符号位也是一位二进制数。按6位二进制代码比较大小的话,会得出101011>010101,这与实际大小恰好相反。
    如果对每个真值加上2的n次方(n为上述真值中除去符号位后的位数),会得出
    10101+100000=110101
    -10101+100000=001011
    再比较它们的大小会得出110101>001011,这样一来6位代码本身就可以看出它们的大小
    2、0的特殊作用:0:表示指数为负无穷大,相当于分数分母无穷大,整个数无穷接近0,在尾数也为0时可用来表示0,尾数不为零表示未正规化的数
    max:表示指数正无穷大,若尾数为0,则表示浮点数超出表示范围(正负无穷大);尾数不为0,则表示浮点数运算错误

    移码是对于某一个系列或集合的数使它们都映射到正数轴上去,即在数轴上把数都统一往右移动n位,使得所有的数都不为负数。这里我们有E=e+01111111,所以对于所有的E有E大于等于0。这里的话,由于E都不为负数,所以我们直接可以由移码的表示形式看出对应数值的大小(这里是把移码当做无符号数来比较大小的,而不必考虑符号,这里比用补码好多了,补码是要变换成原码再比较的)。其次,用移码表示的话,简化了对于“0”的判断,即当移码的各位都为0的话,那么该移码对应的数据是能够表示的数据中的最小值。此外, 用移码来表示阶码的话可以提高表示数据的精度。如果不是采用移码来表示阶码的话,那么当阶码就会出现负值,这样的话当需要把该数据转换成非阶码浮点数据时我们将就需要对尾数进行左移(做乘法运算),这样的话我们会发现最先移去的是尾数的高位,因此这种方法不利于数据的精度表示。而对于才用移码表示阶码的话,我们在转换时是做右移操作,这样最先移去的是最低位,这样比较好地保持了数据的精度。

    展开全文
  • 数据是用二进制数表示的 热身问题 1:32位是几个字节?  4字节:8位为一个字节,所以是4个字节。 2:二进制数0101 1100转换成十进制是多少?  0*128+1*64+0*32+1*16 + 1*8+1*4+0*2+0*0 = 4+8+16+64 = 92...

    第02数据是用二进制数表示的

    热身问题

    1:32位是几个字节?

        4字节:8位为一个字节,所以是4个字节。


    2:二进制数0101 1100转换成十进制是多少?

        0*128+1*64+0*32+1*16 + 1*8+1*4+0*2+0*0 = 4+8+16+64 = 92:将二进制各位数与位权相乘再相加即可。


    3:二进制数0000 1111左移两位后,会变成原数的几倍?

        4被:因基数为2,左移1位即为原值两倍,所以左移2位为原值4倍。


    4:补码形式表示的8位二进制数1111 1111,用十进制数表示的话是多少?

        -1:因+1为1 0000 0000,9位,溢出一位,即为0,所以为-1;1111 1111的补数为求反加1,为0000 0001,因此补码表示的1111 1111为-1。


    5:补码形式表示的8位二进制数1010 1010,用16位的二进制数表示的话是多少?

        前面加8个1。此为符号扩充,符号扩充就是指在保持值不变的情况下将其转换成16位和32位的二进制数。不管是正数还是用补数表示的负数,都只需要用符号位的值(0或者1)填充高位即可。这就是符号扩充的方法。


    6:数值、字符串和图像等信息在计算机内部是以什么形式表现的?

        都是以二进制数值的形式来表现的。


    2.1 用二进制数表示计算机信息的原因

        IC(集成电路(Integrated Circuit))的特性,决定计算机的信息数据使用二进制数来处理更加合适。计算机处理信息的最小单位--位,就相当于二进制中的一位。位的英文bit是二进制数位(binary digit)的缩写。二进制数的位数一般是8位、16位、32位等,也就是8的倍数(binary |ˈbaɪnəri| adj 由两部分组成的 二进制的;digit |ˈdɪdʒɪt| noun [0到9中的任何一个] 数字)。

        8位二进制数被称为一个字节(由bite一词衍生而来:byte)。字节是最基本的信息计量单位。位是最小单位,字节是基本单位(内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读写数据。因此字节是信息最基本的单位)(byte |baɪt| noun 字节)。


    2.2 什么是二进制数

        二进制数的值转化成十进制数的值,只需要将二进制数的各位的值和位权相乘,然后将相乘的结果相加即可。十进制的基数为10,二进制的基数为2,若最右侧位数为1,以此向左逐个增加位数,各位的位权相当于基数的位数减1次冪。


    2.3 移位运算和乘除运算的关系

        位移运算指的是将二进制数的值的各个位依次向左或向右移动的运算。分为左移运算与右移运算。对于左移运算,右侧空出来的位直接补0,若移位操作使最高位溢出,溢出部分直接丢弃。在不存在溢出的情况下,每左移一位,二进制数值相应增加1倍。



    2.4 便于计算机处理的“补数”

        二进制数中表示负数时,一般会把最高位数作为符号使用,因此我们把这个最高位称为符号位。符号位是0时表示正数,符号位是1时表示负数。

        计算机在做减法运算时,实际上内部是在做加法运算。用加法运算来实现减法运算,为此,表示负数时就需要使用二进制的补数。补数就是使用正数来表示负数。

        以用8位表示-1的补数为例:-1的补数为1111 1111,-1的补数加上1等于1 0000 0000,溢出的最高位直接丢弃,即表示0。所以一个数的补数是将二进制的各位取反,再加1

        补数求解的变换方法是取反+1”(无论正负一个数取反+1都得到他的相反数(这些都是建立在使用有限位表示数,溢出的位直接丢弃)。


    2.5 逻辑右移和算术右移动的区别

        右移位运算分为逻辑右移与算术右移。移动后最高位补0称为逻辑右移动。右移后最高位补原本最高位的值称为算术右移,以负数为例,右移后依然是负数,正数右移后依然是正数。

        符号扩充:以8位二进制数为例,符号扩充就是指在保持值不变的情况下将其转换成16位和32位的二进制数。不管是正数还是用补数表示的负数,都只需要用符号位的值(0或者1)填充高位即可。这就是符号扩充的方法。

    展开全文
  • Java--二进制正负表示

    千次阅读 2013-03-13 21:15:45
    5转换成制是101,不过int类型的占用4字节(32位),所以前面填了一堆0。 现在想知道,-5在计算机中如何表示?   在计算机中,负数以其正值的补码形式表达。 什么叫补码呢?这得从原码,反码说起。   ...
  • 二进制数的编码表示

    2018-01-18 11:17:58
    例如,8位二进制数A = (+1011011),B = (-1011011),它们在机器中可以表示为:A:01011011B:11011011 计算机中几种常用的编码----原码、反码和补码。 1.原码将符号位数字化为0或1,的绝对值与符号一起编码,即...
  • 计算机/二进制 如何表示一个负数? 比如 1,可以使用 0001 表示。 使用最高次位为 1 表示,则 -1 使用 1001。缺点:相加不等与 0,比如 -1 + 1 等于 1010 = -2; 使用反码表示,-1 表示为 1110。缺点:存在 -0...
  • 一、十进制转换为二进制数 十进制转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制的整数部分和小数部分分别转换后,再加以合并。 1. 十进制整数转换为二进制整数 十进制整数转换为二进制...
  • 二进制数表示方法

    千次阅读 2020-11-20 16:42:18
    定点和浮点数2.1 定点2.2 浮点数 1.原码、反码、补码 原码 机器最高为符号位,0正1负。 X=-0.1011,[X]原=11011 ,小数点默认在符号位之后,书写时将其省略。 补码 [X]补=[X]原(X>0) [X]补=[X]原除符号...
  • 首先,网上的网友,同学以及老师给出了两种说法: 第一种:-128原码和反码不能用八位二进制表示,原因就是-128超出了范围(原码和反码是有+0和-0之分的);但是补码的0没有正负之分,能够表示的范围为-128~128。...
  • 16进制数怎么判断正负

    千次阅读 2020-04-13 16:07:39
    看首位是否<8,说明是正数,≥8说明是负数。...原理:临界值为7fffH,我们知道首位7的二进制码为0111,而0111的首位是0,说明是正数。而像8000H首位8二进制码为1000,首位为1,就变成负数了。 ...
  • 1 在计算机中为什么使用二进制数在计算机中,广泛采用的是只有"0"和"1"两个基本符号...(2)二进制数用来表示二进制数的编码、计数、加减运算规则简单。(3)二进制数的两个符号"1"和"0"正好与逻辑命题的两个值"是"和...
  • 计算机的二进制数

    2018-12-05 00:09:34
    计算机都是用二进制存储数据,这些二进制数值有两种方式表示:无符号和有符号。 无符号:无符号就是没有正负号之分,只有0和正数;所有位数都表示数值。 有符号:有符号正负号之分,有负数、0、正数...
  •  负数的二进制一般通过正数反推导出,即(正数二进制 -> 取反 -> 补码(加1)),举个例子:  99的二进制为:‭0110 0011‬  那么-99的二进制计算方法为  ‭0110 0011‬  1.取反: 1001 1100 即0...
  • 负数在二进制表示方法

    千次阅读 2017-06-29 17:53:04
     首先说明,看二进制数第一位(即最高位)来判断正负:用0表示非负数,用1表示负数。(具体还要考虑数据类型,下面有详细介绍)。 1、负数通常不用原码表示,而是用补码来表示原码,负数原码的补码是原码的...
  • 虽然不是专业的CS出生,想想接触CS相关的东西也这么久了,居然不知道浮点数在内存中的表示是怎样的,实在是惭愧啊!于是最近查阅了相关资料,终于弄清了浮点数在内存中的表示,现在对相关的东西做一个总结。  以下...
  • 二进制 转换过程 A(十六进制) = 1010(二进制)=10(十进制) B(十六进制) = 1011(二进制)=11(十进制) C(十六进制) = 1100(二进制)=12(十进制) D(十六进制) = 1101(二进制)=13(十进制) E(十六进制) = 1110(...
  • 众所周知,二进制是我们计算机语法的基本组成,他以0和1为基础,构建...对于原码来说,他对于正负表示方法是在整个二进制数前加0或1。0用来表示正号,1用来表示负号。比如,一个正二进制数+1101表示为01101,负二...
  • 关于二进制补码表示法的一些备忘

    千次阅读 2013-10-19 17:02:33
    几乎所有的计算机都使用二进制补码表示法来存储有符号整数,而不是用所谓的符号加绝对值表示法。 1)非负整数的二进制补码为其原样,直接转化为二进制即为其二进制补码。 也就是说,当你定义一个int n=1是,在计算机...
  • 3.7 有符号二进制数

    2019-07-07 16:22:14
    有符号二进制数最左边一位是符号位,0表示正,1表示负。有符号正数的存储方式与非符号相同,负数的存储方式是相应的正数求反加1. 如-76. 其二进制是:0100,1100 取逆:1011,0011 加1:1011,0100...
  • 浮点数的二进制表示 符号位、尾数和指数(以64位浮点数为例) 0、规约和非规约 无穷大和空值NaN 二进制的科学计数法 浮点数在电脑中用二进制储存,约定以二进制的科学计数法来进行表示一个浮点数,类比十...
  • 浮点数的二进制表示

    2016-10-12 15:13:05
    浮点数的二进制表示
  • 浮点数二进制表示

    千次阅读 2014-10-10 19:23:15
    上面这条命令,声明了一个整数变量,类型为int,值为9(二进制写法为1001)。普通的32位计算机,用4个字节表示int变量,所以9就被保存为00000000 00000000 00000000 00001001,写成16进制就是0x00000009。 那么,...
  • 二进制表示数的三种基本编码方式:原码,反码与补码。 原码:符号位和数字实际值的结合。正数是数值本身,符号位为0;负数是数值本身,符号位为1。8位二进制的表示范围是[-127, 127]。 反码:正数是数值本身,...
  • 二进制小数的表示

    千次阅读 2020-08-05 18:03:25
    (若为8位来表示,最高位用来表示正负号(即0与1 ),剩下7位为二进制数,小数点在最低位的右边)。 定点小数的表示: 规定小数点在符号位与最高数值位之间。 (若用一个字节表示,最高位为符号位,其他位为二进制...
  • 1 定点数二进制表示 1.1 规则及表示方法 1.2 补充 2 浮点数二进制表示 2.1 规则及表示方法 2.2 平方根倒数速算法(不得不提到Quake-III Arena (雷神之锤3)) 1 定点数二进制表示 在...
  • 今天看了java中的二进制操作,突然发现本科上电路课程的时候就没有理解计算机采用补码存储二进制数的原因,以及补码的推导。这次算是补课了。 1 补码的概念 正数的补码是其本身 负数的补码:原码-&gt;...
  • 在计算机二进制系统中,位,简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中每 8bit = 1 byte(字节); 无符号和有符号 在计算器中参与运算的有两大类:无符号和有符号 (1)有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,690
精华内容 11,076
关键字:

二进制数如何表示正负