精华内容
下载资源
问答
  • 数据二进制表示

    千次阅读 2020-02-05 17:07:43
    数据二进制表示 文章目录数据二进制表示基础定义二进制 基础定义 位: IC 电子元件有不同种形状,但是其内部的组成单元称为一个个的引脚。只有直流电压0V 或 5V 两个状态。与 “0” 与“1”的表达不谋而合 字节...

    文章目录

    基础定义

    : IC 电子元件有不同种形状,但是其内部的组成单元称为一个个的引脚。只有直流电压0V 或 5V 两个状态。与 “0” 与“1”的表达不谋而合
    在这里插入图片描述

    字节:8 位二进制数被称为一个 字节

    为什么拟定 8 位为一个字节?
    因为 8 位能够涵盖基本的字符编码(英文 26 个字母大小写 + 基本符号位等)

    实例:

     一个英文字母-----占一字节
    
    一个中文字-------占二个字节
    
    一个整数---------占二个字节
    
    一个实数---------占四个字节
    

    图:
    在这里插入图片描述

    二进制

    位权:进制数值中某个位的权重值
    例如:
    十进制数 39 的各个数位的数值,并不只是简单的 3 和 9
    3 表示的是3×10 = 30,9 表示的是 9×1 = 9
    这里和各个数位的数值相乘的 10 和 1,就是位权

    基数:数值的表现方法,进位计数制中各数位上可能有的数值的个数。十进制数的基数是 10,二进制数的基数是 2

    二进制转十进制的理解
    核心:基数 x 位权

    十进制数:
    如 39 这个十进制数,表示的就是 30+9

    二进制数:
    00100111 用十进制数表示的话是 39,因为(0×128)+(0×64)+(1×32)+(0×16) +(0×8)+(1×4)+(1×2)+(1×1)= 39

    补数:将二进制数的值取反后加 1 的结果

    为什么使用补数后就能正确地表示负数了呢?
    实际上是验证:补数与原来的数相加是否为 0
    “将二进制数的值取反后加 1 的结果,和原来的值相加,结果为 0”这一法则
    例子:
    00000001+11111111
    图:
    在这里插入图片描述

    减法运算
    计算机在做减法运算时,实际上内部是在做加法运算。

    进位法则: 对各个进制的数都满足,满基数,向(当前位权+1)进1
    备注:楼主表示纠结这个概念了半天| :( |

    符号位
    二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。符号位是 0 时表示正数 ,符号位是1 时表示负数。
    错误事例
    “1 的二进制数是 00000001,因此-1 就是 10000001”
    正确事例
    “1 的二进制数是 00000001,因此-1 就是 11111111”

    符号位的应用
    有的可以处理负数,有的则不能处理。例如,C 语言的数据类型中,既有不能处理负数的 unsigned short 类型,也有能处理负数的 short 类型。这两种类型,都是 2 字节(= 16 位)的变量,都能表示 2 的 16 次幂 = 65536 种值,这一点是相同的。
    不过,值的范围有所不同,short 类型是- 32768~32767,unsigned short 类型是 0~65535。此外,short 类型和 unsigned short 类型的另一个 不 同 点 在于,short 类 型 是 将 最 高 位 为 1 的 数 值 看 作 补 数, 而unsigned short 类型则是 32768 以上的值。

    为什么总说最高位为 1 时是负数,为 0 时是正数?那么十进制的255用二进制表示就是1111-1111,可是二进制最高位是1的时候是负数,这个应该怎么理解?

    整数分为“有符号整数”和“无符号整数”,以8位的二进制而言:
    如果按无符号整数来用,那么最小值0(二进制0000-0000),最大值是255(1111-1111),总数是256个
    而如果作为有符号整数来用,则最小值为-128(二进制1000-0000),最大值为127(0111-1111),总数也还是256个
    题目中的 " 1111-1111 " 在 “有符号整数”中就不能够表示为 255 了,所以在依据最高位来判断正负数时,应该视具体情况而定

    逻辑右移与算数右移的区别
    算数右移有移位后在最高位补 0 和补 1 两种情况(视数值为正数或者负数)
    当二进制数的值表示图形模式而非数值时,移位后需要在最高位补 0。类似于霓虹灯往右滚动的效果。这就称为 逻辑右移
    图:
    在这里插入图片描述
    符号扩充
    符号扩充就是指在保持值不变的前提下将其转换成 16 位和 32 位的二进制数
    不管是正数还是用补数表示的负数,都只需用符号位的值(0 或者 1)填充高位即可
    图:
    在这里插入图片描述
    逻辑运算
    包括逻辑非(NOT 运算)、逻辑与(AND 运 算)、逻辑或(OR 运算)和逻辑异或(XOR 运算 A)四种

    逻辑异或 指的是排斥相同数值的运算。“两个数值不同”
    图:
    在这里插入图片描述

    展开全文
  • 浮点数的二进制表示

    千次阅读 2017-12-14 22:50:31
    回想float和double类型数据内存分配情况时, 在阮一峰老师的网络日志中看到一篇关于浮点数的二进制表示的博文, 自己在IDEA上敲出Java代码后发现并没有取得原文的效果(Java对于内存的优化),所以原文转载好了#include ...

    回想float和double类型数据内存分配情况时, 在阮一峰老师的网络日志中看到一篇关于浮点数的二进制表示的博文, 自己在IDEA上敲出Java代码后发现并没有取得原文的效果(Java对于内存的优化),所以原文转载好了

    #include <stdio.h>
      void main(void){
        int num=9; /* num是整型变量,设为9 */
        float* pFloat=&num; /* pFloat表示num的内存地址,但是设为浮点数 */
        printf("num的值为:%d\n",num); /* 显示num的整型值 */
        printf("*pFloat的值为:%f\n",*pFloat); /* 显示num的浮点值 */
        *pFloat=9.0; /* 将num的值改为浮点数 */
        printf("num的值为:%d\n",num); /* 显示num的整型值 */
        printf("*pFloat的值为:%f\n",*pFloat); /* 显示num的浮点值 */
      }
      
      运行结果为:
        num的值为:9
      *pFloat的值为:0.000000
      num的值为:1091567616
      *pFloat的值为:9.000000

      在讨论浮点数之前,先看一下整数在计算机内部是怎样表示的

    int num=9;

      上面这条命令,声明了一个整数变量,类型为int,值为9(二进制写法为1001)。普通的32位计算机,用4个字节表示int变量,所以9就被保存为00000000 00000000 00000000 00001001,写成16进制就是0x00000009。
      那么,我们的问题就简化成:为什么0x00000009还原成浮点数,就成了0.000000?
    根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式:

    (1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。
    (2)M表示有效数字,大于等于1,小于2。
    (3)2^E表示指数位。

      举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出s=0,M=1.01,E=2。

      十进制的-5.0,写成二进制是-101.0,相当于-1.01×2^2。那么,s=1,M=1.01,E=2。
      IEEE 754规定,对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M。
    float字节表示
      对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M
    double字节表示

      IEEE 754对有效数字M和指数E,还有一些特别规定。
    前面说过,1≤M<2,也就是说,M可以写成1.xxxxxx的形式,其中xxxxxx表示小数部分。IEEE 754规定,在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。
      至于指数E,情况就比较复杂。
      首先,E为一个无符号整数(unsigned int)。这意味着,如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,E的真实值必须再减去一个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。
      比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001。
      然后,指数E还可以再分成三种情况:
    (1)E不全为0或不全为1。这时,浮点数就采用上面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1。
    (2)E全为0。这时,浮点数的指数E等于1-127(或者1-1023),有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于0的很小的数字。
    (3)E全为1。这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);如果有效数字M不全为0,表示这个数不是一个数(NaN)

      好了,关于浮点数的表示规则,就说到这里。下面,让我们回到一开始的问题:为什么0x00000009还原成浮点数,就成了0.000000?
    首先,将0x00000009拆分,得到第一位符号位s=0,后面8位的指数E=00000000,最后23位的有效数字M=000 0000 0000 0000 0000 1001
      由于指数E全为0,所以符合上一节的第二种情况。因此,浮点数V就写成:

    V=(-1)^0×0.00000000000000000001001×2^(-126)=1.001×2^(-146)

      显然,V是一个很小的接近于0的正数,所以用十进制小数表示就是0.000000

      再看例题的第二部分。
      请问浮点数9.0,如何用二进制表示?还原成十进制又是多少?
      首先,浮点数9.0等于二进制的1001.0,即1.001×2^3。
      那么,第一位的符号位s=0,有效数字M等于001后面再加20个0,凑满23位,指数E等于3+127=130,即10000010。
      所以,写成二进制形式,应该是s+E+M,即0 10000010 001 0000 0000 0000 0000 0000。这个32位的二进制数,还原成十进制,正是1091567616

    展开全文
  • 有符号数的二进制表示方式

    万次阅读 2019-04-21 14:51:36
    以4字节的整型为例,4byte=32bit: 32位数一共可以表示个数,对于有符号... 二进制源码 二进制反码 二进制补码 65535 01111111 11111111 11111111 11111111 01111111 11111111 11111111 11111111 ...

    以4字节的整型为例,4byte=32bit:

    32位数一共可以表示2^{32}个数,对于有符号数来说,表示-2^{31}\rightarrow +(2^{31}-1),其中第一位是符号位。符号为1表示负数;0表示正数。

    源码表示:

    十进制二进制源码二进制反码二进制补码
    6553501111111 11111111 11111111 1111111101111111 11111111 11111111 1111111101111111 11111111 11111111 11111111
    ...   
    200000000 00000000 00000000 0000001000000000 00000000 00000000 0000001000000000 00000000 00000000 00000010
    100000000 00000000 00000000 0000000100000000 00000000 00000000 0000000100000000 00000000 00000000 00000001
    000000000 00000000 00000000 0000000000000000 00000000 00000000 0000000000000000 00000000 00000000 00000000
    -110000000 00000000 00000000 0000000111111111 11111111 11111111 1111111011111111 11111111 11111111 11111111
    -210000000 00000000 00000000 0000001011111111 11111111 11111111 1111110111111111 11111111 11111111 11111110
    ...   
    -6553610000000 00000000 00000000 0000000010000000 00000000 00000000 0000000010000000 00000000 00000000 00000000

     

    注意:源码的反码和补码都是本身,负数的反码除符号位不变之外其他位均按位反,补码在反码的基础上加1。

    负整数A补码的计算方法还可以是使用2^{32}-\left | A \right |的二进制表示。

     

    展开全文
  • 今天做位运算的题目,想要通过查看二进制表示形式来debug和分析 特此记录一下 c++ STL中模板类bitset的简单实用 #Include 将整形int转化为二进制bitset() bitset(x)//将x转化为32位二进制数 测试代码 #include #...

    今天做位运算的题目,想要通过查看二进制的表示形式来debug和分析

    特此记录一下 c++ STL中模板类bitset的简单实用

    #Include<bitset>
    

    将整形int转化为二进制bitset<指定二进制位数>()

    bitset<32>(x)//将x转化为32位二进制数
    

    测试代码

    #include <iostream>
    #include <bitset>
    using namespace std;
    int main(){
    	int x=38^40;
    	cout<<bitset<sizeof(x)*8>(x)<<endl;//int占4字节,一个字节8位,最终输出的是32个0或1
    	cout<<bitset<8>(x)<<endl;//输出8位 
    	return 0;
    }
    

    测试结果
    在这里插入图片描述

    展开全文
  • 使用二进制表示数据状态

    千次阅读 2020-04-30 14:51:44
    使用二进制的方式来表示数据状态(支持无顺序状态) 文章目录使用二进制的方式来表示数据状态(支持无顺序状态)1. 背景介绍2. 通过一个案例引发思考2.1 当签章有顺序时,我们是如何设计的?2.2 当签章顺序无法控制...
  • 计算机中的二进制表示

    千次阅读 2020-12-13 22:55:14
    在计算机中数据运算的本质其实各种门...为了方便数据表示,计算机中定义多种数据类型,每种数据类型取值范围和占用的内存不同,我们可以根据他们占用的内存来计算出他们的取值范围。比如C语言中unsigned int类型(这里先
  • 二进制数据是用0和1两个数码来表示的数,如果想要在前端中处理音频和视频。那你必须要对二进制数据有很好地掌握和操作能力。下面话不多说了,来一起看看详细介绍的吧 类型化数组的出现 类型化数组是 HTML5 中引入的...
  • float浮点数二进制表示转换

    热门讨论 2011-04-05 20:29:45
    根据IEEE754规定写了个float型数据二进制数转换的方法
  • 话不多说,直接上图: 注意区别。 问题①ulong到long的转换,加0b 问题②整数常量太大,加0b
  • shell可以在不调用第3方命令,表示不同进制数据。这里总结以下表示方法。shell 脚本默认数值是由10 进制数处理,除非这个数字某种特殊的标记法或前缀开头. 才可以表示其它进制类型数值。如:以 0 开头就是 8 进制.以...
  • 简明二进制对象表示 (CBOR) 的 AC# 实现,这是 RFC 7049 中定义的通用二进制数据格式。根据该 RFC,CBOR 的数据模型“是 JSON 数据模型的扩展版本”,支持更多类型的数据比 JSON。 该实现由 Peter O. 编写,并根据 ...
  • 适用于将二进制数转换为十进制,A为十进制,B为二进制。{A,B}每次左移一位,判断A的每四位是否>4,若大于四则+3,否则保持不变;B为多少位二进制数则左移多少次。最终A是B转换成十进制的数。代码为32位二进制数转换...
  • 小数的二进制和十六进制表示

    千次阅读 2021-03-27 15:34:08
    简述 今天在研究生复试面试的过程中被问到小数的二进制和十六进制形式怎么表示,然而这个知识点已经记不得了,只能尴尬的和老师说这个知识点没有掌握好,回去会继续学习。不过最后的成绩还不错,...小数用二进制表示.
  • 在工控应用上,返回的数据经常会以二进制的形成存储,而这些二进制数据又是以每4个bit表示一个十六进制的数据内容。解析的时候,往往是一个字节(Byte)占用8个位(bit),高位4bit 表示一个十六进制数据,低位4bit ...
  • C++ 负数的二进制表示

    千次阅读 2020-01-17 20:48:58
    5转换成制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。 -5在计算机中如何表示? 在计算机中, 正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。 负数以其正值的补码形式...
  • 想要了解二进制数是如何表示计算机信息的?先要追本溯源, 二进制(binary)在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)...
  • 简明二进制对象表示(CBOR)(在RFC 7049中定义的通用二进制数据格式)的AC#实现。根据该RFC,CBOR的数据模型“是JSON数据模型的扩展版本”,支持更多类型的数据比JSON。 此实现由Peter O.编写,并根据CC0声明发布...
  • 与此类似,许多分数也不能用二进制表示法准确地表示。实际上,二进制表示法只能精确地表示多个1/2的幂的和。因此,3/4和7/8可以精确地表示为二进制小数,但是1/3和2/5却不能。 浮点数表示法 为了在计算机中表示一个...
  • 浮点数二进制表示

    千次阅读 2018-07-29 20:59:42
    上面这条命令,声明了一个整数变量,类型为int,值为9(二进制写法为1001)。普通的32位计算机,用4个字节表示int变量,所以9就被保存为00000000 00000000 00000000 00001001,写成16进制就是0x00000009。 那么,...
  • 在计算机中,广泛采用“0”和“1”两个基本符号组成的“基2码”,或称为二进制码,来表示各种信息。在计算机中采用二进制码的原因如下:(1)二进制码在物理上容易实现。二进制码的两个符号“1”和“0”正好与电子元...
  • 详解浮点数的二进制表示

    千次阅读 2017-09-19 10:37:33
    1.十进制转二进制方法  十进制数转换为二进制数 十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。  1.1十进制整数转换为二进制整数 ...
  • float浮点数二进制表示转换[源代码]

    热门讨论 2011-04-05 20:34:24
    根据IEEE754规定写了个float型数据二进制数转换的方法
  • 在计算机中我们常用的进制包括:二进制、八进制、十进制与十六进制,它们之间区别在于数运算时是逢几进一位。比如二进制是逢2进一位,十进制是逢10进一位。 2进制、8进制、16进制转换十进制,只需要使用“按权展开...
  • 学过计算机组成原理的小伙伴们都知道,在计算机中,负数的二进制是用2的补码表示负数的。 那么,为什么要用这种方式表示负数?有什么好处? 我们一起来看下吧。 为什么用这种方式表示负数 计算机的内存通常都是由8位...
  • 浮点数的二进制表示(IEEE 754标准)

    千次阅读 多人点赞 2019-02-28 11:59:14
    浮点数是我们在程序里常用的数据类型,它在内存中到底是怎么样的形式存在,是我了解之前是觉得好神奇,以此记录,作为学习笔记。现代计算机中,一般都以IEEE 754标准存储浮点数,这个标准的在内存中存储的形式为: ...
  • 二进制小数的表示

    千次阅读 2020-08-05 18:03:25
    (若为8位来表示,最高位用来表示正负号(即0与1 ),剩下7位为二进制数,小数点在最低位的右边)。 定点小数的表示: 规定小数点在符号位与最高数值位之间。 (若用一个字节表示,最高位为符号位,其他位为二进制...
  • 第一步,在 axios 请求中加入参数,表示接收的数据二进制文件流 responseType: 'blob' 第二步,在拿到数据流之后,把流转为指定文件格式并创建a标签,模拟点击下载,实现文件下载功能 let blob = res.data let reader =...
  • 文字,图片,视频,音频的二进制表示

    千次阅读 2019-06-06 11:26:54
      首先,我们来介绍计算机如何用二进制表示文字。   为了让一串0,1能够代表特定的文字,人们规定使用一个字节中的七位来表达特定的文字,这就是大名鼎鼎的ASCll(American Standard Code for Information Inte...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 705,743
精华内容 282,297
关键字:

数据的二进制表示