数据的存储(进阶)下

简介: 笔记

浮点数如何往出拿

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;
}
相关文章
|
机器学习/深度学习 存储 SQL
15个超级棒的外文免费数据集,学习数据分析不愁没有数据用了!
15个超级棒的外文免费数据集,学习数据分析不愁没有数据用了!
694 0
如何使用控制台群发短信 | 阿里云短信服务
操作指南|通过控制台群发短信
1084 14
|
SQL Java 数据库连接
什么是JDBC(Java Database Connectivity)?
JDBC(Java Database Connectivity)是Java语言用于连接和操作数据库的一个标准API。它提供了一种统一的方法来访问不同的数据库系统,使得Java程序能够与数据库进行交互,执行SQL语句,并处理查询结果。
248 0
|
Ubuntu 安全 Linux
openSSH升级
【10月更文挑战第2天】本文介绍了如何升级 OpenSSH 的步骤。首先,通过不同命令检查当前系统中的 OpenSSH 版本;其次,备份配置文件以防升级时丢失;然后,在 Debian/Ubuntu 和 CentOS/RHEL 系统中分别执行不同的命令进行升级;最后,验证升级后的版本并检查服务状态,解决兼容性问题,并考虑新的安全特性。
1811 3
|
监控 持续交付 开发工具
软件配置管理与知识库管理实践
【8月更文第22天】软件配置管理(SCM)是在软件开发过程中为了确保项目的可追溯性和可控性而实施的一系列管理活动。它涵盖了版本控制、变更控制、发布管理和知识库管理等多个方面。本文将详细介绍这些关键领域的实践方法,并通过一个虚构的软件项目——“云笔记”应用程序为例来进行说明。
511 1
|
存储 JSON 定位技术
基于or-tools解决物流调度问题(二)
基于or-tools解决物流调度问题(二)
390 6
|
存储 算法 Linux
Gzip的压缩级别有哪些选择?
【4月更文挑战第29天】Gzip的压缩级别有哪些选择?
932 1
|
存储 机器学习/深度学习 数据可视化
贝叶斯优化实战(三)(1)
贝叶斯优化实战(三)
233 0
|
SQL Java 数据库连接
mybatis plus :mybatis简化了jdbc,mybatisplus简化了mybatis
mybatis plus :mybatis简化了jdbc,mybatisplus简化了mybatis
466 0

热门文章

最新文章