IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 2021年10月22日 计组+数据结构 -> 正文阅读

[数据结构与算法]2021年10月22日 计组+数据结构

1. 原码和补码除法中的加减交替法的区别

2. 强制类型转换

2.1 定点数的强制类型转换

2.2 浮点数的强制类型转换

xx位机器:CPU当中的寄存器一次能够处理的数据的比特位位数

3. 边界对齐?

4. 浮点数的表示

?

5. 浮点数的规格化

?5.1 浮点数的左规和右规

?5.2 浮点数的溢出

?6. IEEE 754标准

Institute of Electrical and Electronics Engineers

?

?

7. 浮点数的表示和运算

7.1 浮点数的加减运算

7.2 浮点数的加减运算舍入?

8. 算数逻辑单元?

?8.1?逻辑符号

?

8.1.1 门的电路实现

8.2 加法设计器

8.2.1 一位全加器?

8.2.2 串行加法器

8.2.3 并行加法器

本质上和穿行加法器没啥区别,因为一直要等上一位的进位信息

?并行加法器的优化

通过增加额外的线路连接提高速度

?在CLA加法器的基础上继续拓展成CLA电路

?

ALU芯片的组织

?组内并行,组间串行或者并行

?

9. 存储系统

9.1 主存储器

9.1.1 存储体

9.1.2 存储器芯片的结构

读写控制线可以是一根,也可以是两根

地址线和数据线与存储芯片的容量等价

片选线有两种模式,根据送来的0/1信号确定是否工作

?

9.2 寻址

按不同大小的单元来切分存储器的存储体

?

10.??数组模拟环形队列

10.1 代码实现

package com.yan.DataStructures.Queue;

import java.util.Scanner;

public class CycleArrayQueueDemo {
    public static void main(String[] args) {
//        测试
        System.out.println("数组模拟环形队列");

//        为了和单项数组模拟的队列作对比,这里是4来存放3个数据,因为空了一个位置
        CycleArray queue = new CycleArray(4);
//        接收用户输入
        char key = ' ';
//        创建Scanner对象
        Scanner scanner = new Scanner(System.in);
        boolean loop = true;
//        输出一个菜单
        while(loop)
        {
            System.out.println("s(show):显示队列");
            System.out.println("e(exit):退出程序");
            System.out.println("a(add):添加数据到队列");
            System.out.println("g(get):从队列取出数据");
            System.out.println("h(head):查看队列头的数据");

//            接收用户输入的字符
            key = scanner.next().charAt(0);

            switch (key)
            {
                case 's':
                    queue.showQueue();
                    break;
                case 'a':
                    System.out.println("请输入想添加的数");
                    int value = scanner.nextInt();
                    queue.addQueue(value);
                    break;
                case 'g':
                    try {
                        int res = queue.getQueue();
                        System.out.printf("取出的数据是%d\n", res);
                    }
                    catch (Exception e)
                    {
                        System.out.println(e.getMessage());
                    }
                    break;
                case 'h':
                    int res = queue.headQueue();
                    System.out.printf("队列的头数据是%d\n", res);
                    break;
                case 'e':
//                    关闭scanner
                    scanner.close();
                    loop = false;
                    break;
                default:
                    break;
            }
        }

        System.out.println("程序已退出!");

    }

}

class CycleArray
{
    //    数组最大容量、队列头、队列尾,用于存放数据的数组
    private int maxSize;
    //    队列头指向第一个元素位置
    private int front;
    //    队列尾指向最后一个元素之后的元素位置
    private int rear;
    private int[] arr;

    //    创建队列的构造器
    public CycleArray(int arrMaxSize)
    {
        this.maxSize = arrMaxSize;
        arr = new int[this.maxSize];
    }

    //    判断队列是否满
    public boolean isFull()
    {
        return (rear+1) % maxSize == front;
    }

    //    判断队列是否为空
    public boolean isEmpty()
    {
        return rear == front;
    }

    //    1.添加数据到队列
    public void addQueue(int k)
    {
//        先判断队列是否满
        if(isFull())
        {
            System.out.println("队列已满!");
            return;
        }

        arr[rear] = k;
//        此处后移rear的时候考虑取模
        rear = (rear+1) % maxSize;
    }

    //    2.数据出队
    public int getQueue()
    {
        if(isEmpty())
        {
//            通过抛出异常来处理
            throw new RuntimeException("队列为空,不能取数据!");
        }

        int tmp = arr[front];
        front = (front+1) % maxSize;
        return tmp;
    }

    //    3.显示队列的所有数据
    public void showQueue()
    {
        if(isEmpty())
        {
            System.out.println("队列为空,没有数据!");
            return;
        }

//        这里需要重点理解,这个for循环的开始到终止条件怎么写,以及打印的时候为什么还要对i取模
        for (int i = front; i < front+((rear+arr.length-front) % maxSize); i++) {
            System.out.printf("arr[%d]=%d\n", i%maxSize, arr[i%maxSize]);
        }
    }

    //    4.显示队列的头数据(不是取数据)
    public int headQueue()
    {
        if(isEmpty())
        {
            System.out.println("队列为空,没有头数据!");
            return 0;
        }

        return arr[front];
    }

}

总结

?

1. 谈谈在数据存储中边界对齐和非边界对齐的区别?

? 如果使用边界对齐的方法,就是用内存换时间,如果使用非边界对齐的方法,就是用时间换内存,例如要读一个半字的short变量,如果是边界对齐则只需要读一次地址(计算机每次访存只能读写1个字!),如果采用非边界对齐的话有可能访存两次,虽然降低了内存空间的占用,但是增大了时间成本

2.?单精度浮点数和双精度浮点数的最大和最小值分别是多少?

?

3.?谈谈机械码和真值的区别?

? 机械码没有正负号,而真值有,计算机硬件层面使用的是机械码,而人更理解的是真值

4.?int和float都是4字节,它们之间相互进行强制转换会有什么结果?

? 从表示范围上来说,float的表示范围大于int,但是都是4字节32位,能表示的总个数都是2^32个,因此int强转成float的时候,虽然不会产生溢出(因为int的表示范围小于float),但是可能会损失精度。float强转成int的时候,既可能发生溢出,也有可能损失精度

5. 谈谈如何使用基础电路实现异或门?

?

6.?如何优化加法计算器的速度?

通过不断添加电路线,组成新的模块,使得既能在组内并行,又能组间并行运算

7. 实现数组模拟环形队列的注意点

注意要预留一个空位,这样做的目的是方便判断这个数组模拟循环队列时候的空和满。

在打印队列元素的时候,注意怎么写

for(int i=front; i<(front+(rear+arr.length-front)%maxSize); i++)

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-23 12:44:52  更:2021-10-23 12:46:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:36:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码