数据的存储(进阶)下

简介: 笔记

浮点数如何往出拿

E不全为0或不全为1

这时,浮点数就采用下面的规则表示,即指数 E 的计算值减去 127 (或 1023 ),得到真实值,再将

有效数字 M 前加上第一位的 1 。

比如:

0.5(1/2)的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为

1.0*2^(-1),其阶码为-1+127=126,表示为

01111110,而尾数1.0去掉整数部分为0,补齐0到23位00000000000000000000000,则其二进

制表示形式为:

0 01111110 0000000000000000000000017.png18.png

存放E的空间全为0

这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,

有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。这样做是为了表示±0,以及接近于 0的很小的数字。19.png

存放E的空间全为1

这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s);20.png

浮点数列题

#include<stdio.h>
int main()
{
  int n = 9;
  float* pFloat = (float*)&n;
  printf("n的值为:%d\n", n);
  printf("*pFloat的值为:%f\n", *pFloat);
  *pFloat = 9.0;
  printf("num的值为:%d\n", n);
  printf("*pFloat的值为:%f\n", *pFloat);
  return 0;
}

21.png22.png

所以会打印0.0000000000

23.png习题1


原码、反码、补码说法错误的是( )


A.一个数的原码是这个数直接转换成二进制


B.反码是原码的二进制符号位不变,其他位按位取反


C.补码是反码的二进制加1


D.原码、反码、补码的最高位是0表示负数,最高位是1表示正数


选D,D说反了


习题2


int main()
{
  unsigned char a = 200;
  unsigned char b = 100;
  unsigned char c = 0;
  c = a + b;
  printf(“%d %d”, a+b,c);
  return 0;
}


24.png

c=4425.png

习题3


unsigned int a= 0x1234; unsigned char b=*(unsigned char *)&a;

在32位大端模式处理器上变量b等于( )


A.0x00


B.0x12


C.0x34


D.0x1234


大端存储:0x 00 00 12 34


小端存储:0x 34 12 00 00


A


习题4


关于大小端字节序的描述正确的是( )


A.大小端字节序指的是数据在电脑上存储的二进制位顺序


B.大小端字节序指的是数据在电脑上存储的字节顺序


C.大端字节序是把数据的高字节内容存放到高地址,低字节内容存放在低地址处


D.小端字节序是把数据的高字节内容存放到低地址,低字节内容存放在高地址处


A应为B,CD互相说反了。


小端字节序: 低位放在低地址


大端字节序:高位放在低地址


习题5


5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:


A选手说:B第二,我第三;


B选手说:我第二,E第四;


C选手说:我第一,D第二;


D选手说:C最后,我第三;


E选手说:我第四,A第一;


比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。


#include<stdio.h>
#include<stdlib.h>
int main()
{
  int a = 0, b = 0, c = 0, d = 0, e = 0;
  for (a = 1; a <= 5; a++)
  {
  for (b = 1; b <= 5; b++)
  {
    for (c = 1; c <=5; c++)
    {
    for (d = 1; d <= 5; d++)
    {
      for (e = 1; e <= 5; e++)
      {
      if (((a != b) && (b != c) && (c != d) && (d != e)))
      {
        if (((b == 2) + (a == 3) == 1)&& 
        ((b == 2) + (e == 4) == 1) && 
        ((c == 1) + (d == 2) == 1) &&
        ((c == 5) + (d == 3) == 1) && 
        ((e == 4) + (a == 1) == 1))
        {
        if ((a * b * c * d * e) == 120)
        {
          printf("a=%d名\n", a);
          printf("b=%d名\n", b);
          printf("c=%d名\n", c);
          printf("d=%d名\n", d);
          printf("e=%d名\n", e);
        }
        }
      }
      }
    }
    }
  }
  }
  system("pause");
  return 0;
}


习题7


日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。


以下为4个嫌疑犯的供词:


A说:不是我。


B说:是C。


C说:是D。


D说:C在胡说


已知3个人说了真话,1个人说的是假话。


现在请根据这些信息,写一个程序来确定到底谁是凶手。


#include<stdio.h>
//
//A说:不是我。
//
//B说:是C。
//
//C说:是D。
//
//D说:C在胡说
//
//已知3个人说了真话,1个人说的是假话。
//
//现在请根据这些信息,写一个程序来确定到底谁是凶手。int main()
{
  int a = 0, b = 0, c = 0, d = 0;    //1是凶手,0不是凶手
  int i = 0;
  int FD;
  for (i = 1; i <= 4; i++)
  {
  if (i == 1)       //A在瞎说
  {
    c = 1;
    d = 1;
    d = 0;
    FD = 1;
  }
  if (i == 2)// B在瞎说
  {
    c = 0;
    a = 0;
    d = 1;
    d = 0;
    FD = 1;
  }
  if (i == 3)//C在瞎说
  {
    a = 0;
    c = 1;
    d = 0;
    FD = 0;
  }
  if (i == 4)
  {
    a = 0;
    c = 1;
    d = 1;
    FD = 1;
  }
  if (a + b + c + d == 1 && FD == d)
  {
    printf("A=%d B=%d C=%d D=%d",a, b, c, d);
  }
  }
  return 0;
}

习题8


杨辉三角


#include<stdio.h>
int main()
{
  int a[99][99];
  int h;
  scanf("%d", &h);
  int i, j, k;
  for (i = 0; i < h; i++)
  {
  for (j = 0; j < h - i; j++)
  {
    printf(" ");
  }
  a[i][0] = 1;
  for (j = 1; j <=i; j++)
  {
    a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
  }
  a[i][i] = 1;
  for (j = 0; j <= i; j++)
  {
    printf("%d ", a[i][j]);
  }
  printf("\n");
  }
  return 0;
}
相关文章
|
2月前
|
存储 编译器 C语言
C进阶:数据在内存中的存储(1)
C进阶:数据在内存中的存储(1)
|
2月前
|
存储
C进阶:数据在内存中的存储(2)
C进阶:数据在内存中的存储(2)
|
6月前
|
存储 人工智能 编译器
【C进阶】深度剖析数据在内存中的存储
【C进阶】深度剖析数据在内存中的存储
31 0
|
9月前
|
存储 小程序 编译器
【数据的存储】(深度剖析)
带你深度剖析数据在内存中的存储
|
12月前
|
存储 小程序 编译器
C进阶:数据在内存中的存储
这样我们就彻底理解了浮点数在内存中的存储规则。还是开头说的,其实这部分内容真的很难考到,学习这些知识更像是一种修炼内功,让我们理解的更加透彻,拓展我们的知识面,如果遇到这样的现象能够去解释,关于素养的这种实际价值就靠自己体会了。好了,以上就是C进阶数据在内存中的存储内容。
C进阶:数据在内存中的存储
|
12月前
|
存储
数据的存储知识点总结
数据的存储知识点总结
|
存储 机器学习/深度学习 编译器
【C进阶】第十篇——数据在内存中的存储
【C进阶】第十篇——数据在内存中的存储
【C进阶】第十篇——数据在内存中的存储
|
存储 编译器 C语言
|
存储 移动开发 缓存
H5 存储 | 学习笔记
快速学习 H5 存储
H5 存储 | 学习笔记