精华内容
下载资源
问答
  • 为什么图上二进制存储形式和内存存储形式的第二个框中的数字不一样?另外就是他为啥是2个字节? ![图片说明](https://img-ask.csdn.net/upload/201512/27/1451177896_559885.png) 老师ppt上用100做的例子,内存...
  • 我们经常听说浮点数,其实...第部分是小数点应该左移或右移的位移量;第三部分是小数点位置固定的定点表示法。下面介绍常用的IEEE标准定义的浮点数的标准。符号部分: 0表示正数 1表示负数位移量部分:采用余127码...

    我们经常听说浮点数,其实浮点数是和定点数对应的。定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数。

    浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以是正数可以是负数;第二部分是小数点应该左移或右移的位移量;第三部分是小数点位置固定的定点表示法。

    下面介绍常用的IEEE标准定义的浮点数的标准。

    a4c26d1e5885305701be709a3d33442f.png

    符号部分: 0表示正数 1表示负数

    位移量部分:采用余127码表示。在余码系统中,正数和负数都用无符号数储存,而且可以保持原有的大小关系,只需要将所有的数字整体右移。即该部分看做无符号整数,127表示0

    126表示-1 128表示1

    尾数部分:是将某数字化为1.xxxxxxx * 2^n的形式后的xxxxxx部分.小数点和其左边的1并不存储。

    浮点数的存储步骤:

    1. 看符号位

    2.将数字转化成二进制

    3.将二进制规范化为 1.xxxxxxxx*2^n

    4. 将n转化为指数(加上127) 尾数xxxx后面补零

    5.写出

    下面举几个例子:

    5.75的二进制表示

    1. 是正数,因此符号位为0

    2. 十进制转化二进制 5.75 = 101.11(二进制)

    3. 将二进制规范化:101.11 = 1.0111 * 2^2

    指数部分为2  尾数部分为0111

    4. 根据余127码 指数部分为 2+127 = 129 = 10000001(二进制) 尾数部分后面补零

    01110000000000000000000

    5. 表示如下

    0 10000001 01110000000000000000000

    -161.875的二进制表示

    1. 符号位为1 (负数)

    2.转化为二进制 161.875 = 10100001.111(二进制)

    3.二进制规范化: 10100001.111 = 1.0100001111 * 2^7

    4.指数部分E = 7+127 = 134 = 10000110(二进制) 尾数部分0100001111

    5.表示如下

    1 10000110 01000011110000000000000

    1 10010100 00000000111000100001111表示为实数

    1. 首位为1 是负数

    2. 指数部分10010100 = 148  148-127

    = 21

    3. 尾数去规范化 1.00000000111000100001111

    4.二进制为 1.00000000111000100001111 * 2^21

    5. 十进制为2104378.75

    6.该数字是 -2104378.75

    c语言验证

    a4c26d1e5885305701be709a3d33442f.png

    源代码如下

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    #include

    int main(void)

    {

    float fnum = 1;

    int i;

    int * p = (int

    *)&fnum;

    while (fnum

    != 0)

    {

    printf("input

    a num: ");

    scanf("%f",

    &fnum);

    for (i

    = 31;

    i >= 0;

    i--)

    {

    printf("%d",

    (*p

    & (1

    << i)

    ? 1:

    0));

    }

    printf("\n");

    }

    return 0;

    }

    展开全文
  • 将数据以二进制形式输出,支持整数类型和浮点数类型,方便理解数据在计算机中如何以二进制存储 整数1的存储如下: 浮点数1.0的存储如下:<00111111 10000000 00000000 00000000>
  • 图片以二进制形式存储到数据库中和显示 图片以二进制形式存储到数据库中和显示
  • 主要示范C# winform 上传的图片以二进制形式储存到数据库 以及 从数据库中展示图片的Demo
  • 这都是历年比较经典的题,学语言的同学必看哦,这是矿大老是总结的一、选择题:(1)以下叙述中错误的是A)C语言中对二进制文件的访问速度比文本文件快B)C语言中,随机文件以二进制代码形式存储数据C)语句 FILE fp;...

    这都是历年比较经典的题,学语言的同学必看哦,这是矿大老是总结的

    一、选择题:

    (1)以下叙述中错误的是

    A)C语言中对二进制文件的访问速度比文本文件快

    B)C语言中,随机文件以二进制代码形式存储数据

    C)语句 FILE fp; 定义了一个名为fp的文件指针

    D)C语言中的文本文件以ASCII码形式存储数据

    (2)有以下程序

    #include

    main()

    { FILE *fp; int i, k, n;

    fp=fopen("data.dat", "w+");

    for(i=1; i<6; i++)

    { fprintf(fp,"%d ",i);

    if(i%3==0) fprintf(fp,"\n");

    }

    rewind(fp);

    fscanf(fp, "%d%d", &k, &n); printf("%d %d\n", k, n);

    fclose(fp);

    }

    程序运行后的输出结果是

    A)0 0

    B)123 45

    C)1 4

    D)1 2

    (3)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是

    A)feof(fp)

    B)ftell(fp)

    C)fgetc(fp)

    D)rewind(fp)

    (4)有以下程序

    #include "stdio.h"

    void WriteStr(char *fn,char *str)

    {

    FILE *fp;

    fp=fopen(fn,"W");

    fputs(str,fp);

    fclose(fp);

    }

    main()

    {

    WriteStr("t1.dat","start");

    展开全文
  • C语言将ip地址的二进制形式转化为十进制的形式01515rhbz2017.12.26浏览15次分享举报题目的意思是输入一个32位的二进制的数,每8位转化为一个十进制的书,将其转化为十进制的ip地址。然后我写的代码是这样的#...

    C语言将ip地址的二进制形式转化为十进制的形式0

    dcebd7a0de6265b6ccae5ead692f1eab.png1515rhbz2017.12.26浏览15次分享举报

    题目的意思是输入一个32位的二进制的数,每8位转化为一个十进制的书,将其转化为十进制的ip地址。然后我写的代码是这样的#includeintmain(){intn,i,j,k;interdn[8]={128,64,... 题目的意思是输入一个32位的二进制的数,每8位转化为一个十进制的书,将其转化为十进制的ip地址。

    然后我写的代码是这样的

    #include

    int main()

    {

    int n,i,j,k;

    int erdn[8]={128,64,32,16,8,4,2,1};//二进制每一位的权重

    char ip[4][8];//储存ip地址的二进制形式

    scanf("%d",&n);

    while(n--)

    {

    int sum[4]={0};//清空上一组的数据

    scanf("%s",ip);//输入数据

    for(j=0;j<4;j++)

    {

    for(k=0;k<8;k++)

    {

    ip[j][k]-='0';//求出每一位的值,原来是字符型

    sum[j]+=(ip[j][k]*erdn[k]);//每一位加上自己的权重

    }

    //if(ip[j][0]) sum[j]+=128;

    }

    printf("%d.%d.%d.%d\n",sum[0],sum[1],sum[2],sum[3]);

    }

    return 0;

    }

    问题是,将这32位的数分成四组之后,每组的第一个数并没有乘以128加到sum这个数组中去

    比如我输入1000000100000010000001000000(一个1带七个0x4)输出就是0.0.0.0(四个0)

    请问一下各位大神这究竟是哪里错了 展开

    展开全文
  • 计算机二进制储存

    千次阅读 2018-10-09 01:26:37
    我们都知道,计算机储存数据最终都是转换成二进制数字进行储存,而计算机进行简单的运算时,也是通过二进制下的数字进行计算的,下面我们就探究一下计算机在二进制储存下的计算方式。 首先我们在数学中学习过对一个...

    计算机二进制储存

    我们都知道,计算机储存数据最终都是转换成二进制数字进行储存,而计算机进行简单的运算时,也是通过二进制下的数字进行计算的,下面我们就探究一下计算机在二进制储存下的计算方式。

    首先我们在数学中学习过对一个十进制数字进行除二取余法之后倒序排列获得这个十进制数的二进制数。以(11)_{10}为例:

    11除以2等于5,余数为1;5除以2等于2,余数为1;2除以2等于1,余数为0;1除以2等于0,余数为1。最后我们得到了1101,倒序排列就是1011,这就是二进制数的11,即(11)_{10}=(1011)_2

    在计算机中,一个整数通常存放在一个整数型变量中,对于java而言,其整数型变量类型有byte, short, int, long四种;对于c++而言,其整型有unsigned int, int, long int(这里声明一点,c++语言中有short, int, long int, long long, long long int等等整型的数据类型,但是这些类型有微妙的关系。这和c语言当时的定义有关,c语言定义整型数据的空间占用根据操作系统的位数,具体大家可以参考其他博客资料或者书籍资料。而c语言标准也有这么一句话:长整型至少和整型一样长,整型至少和短整型一样长。也就是说int可以和short一样长,long可以和int一样长。这里我只列出三个类型,分别占用4Bytes, 4Bytes, 8Bytes)。

    计算机储存变量的时候,通常把最左边一位当做符号位,即0表示正数,1表示负数。比如4Bytes的int类型变量储存了十进制的11,那么在内存中它的存在形式是00000000 00000000 00000000 00001011,那么如果它储存的是十进制的-11,那么它的存在形式是10000000 00000000 00000000 00001011,这个数就叫二进制原码。

    但是当我们以二进制原码进行计算的时候,就会有出乎意料的问题发生,我把二进制下的11和-11相加(我按照1Byte长度的数字进行演示,这样省略了中间很多的0,看起来很方便),就是00001011 + 10001011 = 10010110 = (-22)_{10},这不正确!!!我们期望的结果是0,但是真正的计算结果是-22,发生了什么?!

    这就要引出我们对于反码的概念,我们看到了对二进制原码进行计算会发生出乎预料的结果。所以数学家们很聪明,他们设计了一种二进制编码叫做反码。其规范是这个样子,对于一个正数,其二进制反码和原码相同;对于一个负数,其二进制反码即其二进制原码除了符号位各位取反后的结果。拿13和-15举例:(注明一下,因为我的原稿用的是原,反,补三个字做下标的。但是CSDN的公式不能使用中文作为下标,因此我就取这三个字的拼音首字母作为下标,请各位注意)(13)_{10}=(00001101)_y=(00001101)_f(-15)_{10}=(10001111)_y=(11110000)_f。那么13 + (-15) = (00001101)_f + (11110000)_f = (11111101)_f = (10000010)_y = (-2)_{10}。那么我们再拿15 + (-13)举例:15 + (-13) = (00001111)_f + (11110010)_f = (1\ 00000001)_f这里发生了进位,怎么办?别担心,二进制反码的计算准则是若存在进位,则把进位放到末尾位加上,简单来说就是把多出来的1加给后面的00000001,结果就是(00000010)_f=(+2)_{10}。是不是超级神奇?

    但是即便是反码运算,也会存在 (00000000)_f(11111111)_f这两个东西,你可以把它转化成原码看。妈耶!这两个一个是+0一个是-0,而它俩竟然不是一个东西。我学过的数学0就是0,不存在-0这种东西耶?

    所以这就引出了下一个东西,它叫做补码。补码的定义和反码很像,对于一个正数,它的二进制补码是它的二进制原码;对于一个负数,它的二进制补码是它的二进制反码再加上1。

    还是拿-11举例子:(-11)_{10}=(10001011)_y=(11110100)_f=(11110101)_b。接下来还是拿15+(-13)和13+(-15)进行举例:13 + (-15) = (00001101)_b + (11110001)_b = (11111110)_b = (11111101)_f = (10000010)_y = (-2)_{10}15 + (-13) = (00001111)_b + (11110011)_b = (1\ 00000010)_b。这里要注意了,补码的计算和反码不一样,如果多出了1,那么直接当做越界处理,简单来说就是直接扔掉,保留之后的就好。也就是说,这里的(1\ 00000010)_b = (00000010)_b = (00000010)_y = (+2)_{10}。这样一来补码的计算问题也就解决了,那么接下来就是所谓的+0和-0的问题了,对于(-0)_{10} = (10000000)_y = (11111111)_f = (1\ 00000000)_b,我们不难发现,补码的-0直接越界了,按照我们之前的处理,1被扔掉了,那么又剩下00000000即+0了。我们统一了+0和-0!这很完美!

    但是我们还是发现了有一个二进制补码无法被计算到,它就是(10000000)_b。你可以尝试把它转换成二进制原码,你会发现,根本无法转换!这时候我们把(10000000)_b人为定义成(-128)_{10}。为什么这么定义?你可以对它计算一下,你发现,当你计算(-128)+1时,它的结果奇迹般的是(-127)(这个过程我就不写了)。而你计算(-128)+(-1)的时候,它竟然成为了+127!这个过程是这样的:(-128)+(-1)=(10000000)_b+(11111111)_b=(1\ 01111111)_b=(01111111)_b=(+127)_{10}。这就牵扯到储存机制。1byte的数字可以储存从-128~127的数字,这个范围是-2^7~2^7-1。占用4bytes的int整型则可以储存从-2147483648~2147483647也就是-2^{31}~2^{31}-1。上面的7和31就是储存数据的位数。二进制补码就决定了当我们的数字越界的时候,最小的数字继续小下去,就会从最大的那个再小一个轮回;同样最大的数字继续大下去,就会从最小的那个再大一个轮回。

    以上就是计算机二进制数据储存的原理。

    展开全文
  • 本文以实例形式讲述了ASP.NET实现图片以二进制形式存入数据库的方法。过去我们都是直接在数据库中存入图片文件名的,还没有试过存储整张图片到数据库中,经过一番资料查询与测试,整理出了如下的功能代码: 1.建立...
  • C++查看数据二进制形式 C++查看数据二进制形式 C++查看数据二进制形式
  • C语言的任何类型数据在计算机内部都是以二进制形式存储的?來源:互聯網2010-01-02 08:17:14評論分類: 電腦/網絡 >> 程序設計 >> 其他編程語言參考答案:现在很少有人学C语言了!!!C语言是编系统程序才用...
  • 我们知道,计算机中任何整数都是以二进制补码的形式存储,下面的程序用来计算整数在存储时,二进制中1的个数。 (以下代码以32位系统为例) 第一种方法 #include &lt;stdio.h&gt; int main() { int num = 7...
  • D 分析:计算机内部信息都是由“cpu”运算和控制处理的,其处理二进制的部件就是“ALU”(算术逻辑部件)。B 分析:这个BCD码的全称是EBCDIC码,它同ASCII码一样在国际上通用,只不过它使用于大型的计算机中而ASCII码...
  • -7 实际上就是将7的二进制数取反加一 取反就是0变1,1变0 在计算机中实际上7的储存方式是 0000-0000 0000-0000 0000-0000 0000-0111 将其取反  1111-1111 1111-1111 1111-1111 1111-1000 +0000-0000 0000-...
  • 数据在内存中的存储二进制形式存储) 计算机要处理的信息是多种多样的,如数字、文字、符号、图形、音频、视频等,这些信息在人们的眼里是不同的。但对于计算机来说,它们在内存中都是一样的,都是以二进制形式...
  • Redis以二进制形式存储对象

    千次阅读 2020-01-15 17:01:34
    代码已测试 直接测试就可以 ,注意 实体类一定要 实现 Serializable 接口 不然会报错 import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component;...
  • 先详细补充二进制的所有内容,整合二进制涉及的所有算法
  • ;将BX寄存器中的数值以16位二进制形式输出到屏幕 BIN_Print
  • 二进制存储图片

    2019-07-16 20:19:37
    //这是个简单的小案例—用MySQL 数据库以二进制形式存储图片 我们数据库的类型应为:mediumblob 类型 原因:为了防止保存进去的图片超出存储的容量界线用mediumblob,它的最大存储量是16M; MySQL中,blob是一个...
  • 如何将图片以二进制形式存入数据库中 在二进制形式读取出来 求代码
  • ①前端url传给服务器图片id,根据id查找对应图片的二进制数据 ②图片实体类用byte[]接收图片二进制数据 ③repsonse设置浏览器响应设置 ④response.getWriter() 用于处理字符流数据 ⑤response.getOutputStream...
  • 我们知道,int 类型的数为有符号数,在计算机中占据4个字节(以32位2进制形式存储)。 下面这段代码将负数转化为它在计算机中的存储形式,操作平台为VS。 注意:用int类型的负数是有范围的,int类型能表示的负数为...
  • 以下是对.Net下二进制形式的文件(图片)的存储与读取进行了详细的分析介绍,需要的朋友可以过来参考下
  • 1、(-1)^s 表示符号位,当 s=0,...举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×2^2。那么,按照上面V的格式,可以得出 s=0,M=1.01,E=2。 IEEE 754 规定,对于 32 位的浮点数,最高的 1 位是符号位 s...
  •  0.3的二进制:0100110011...0011... (小数部分二进制算法:小数部分乘以2,如果大于1,取1,否则取0) Step 3 : 求Sign符号位的二进制  因为10.3>=0,所以Sign(符号位)位:0 。 Step 4 :  求...
  •  * 键盘录入一个int类型的整数,对其求二进制表现形式  * 如果录入的整数过大,给予提示,录入的整数过大请重新录入一个整数BigInteger  * 如果录入的是小数,给予提示,录入的是小数,请重新录入一个整数  * 如果录入...
  • 有的时候需要把图片存在数据库中以达到用户看不到图片的效果,在这里主要讲解以二进制形式存储方法。 这里的图片有两种,一种是在本地,一种是通过GDI画好的。 在本地的图片写入数据库中的时候 FileStream fs =
  • C/C++ 图像二进制存储与读取

    万次阅读 热门讨论 2016-03-02 21:19:39
    在深度学习时,制作样本数据集时,需要产生和读取一些二进制图像的数据集,如MNIST,CIFAR-10等都提供了适合C语言的二进制版本。本文介绍了C/C++语言进行图像二进制存储与读取的方法。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 313,526
精华内容 125,410
关键字:

二进制存储形式