类型化数组

数字存储前置知识

  1. 计算机必须使用固定的位数来存储数字,无论存储的数字是大是小,在内存中占用的空间是固定的
  2. n位的无符号整数能表示的个数是2^n个 取值范围是0~2^n-1 举例:000 001 ···111 表示[0-8]
  3. n位的有符号整数能表示的个数是2^n个 取值范围是-2^(n-1)~2^(n-1)-1   举例:000 001 ··· 111 第一位数字表示正负号 因此表示[-4-3]
  4. 浮点数表示法 可以用于表示整数和小数,目前分为两种标准
  • 32位浮点数:单精度浮点数,用1位表示符号,8位表示阶码(指数 eg:10^n),23位表示尾数
  • 64位浮点数:双精度浮点数,用1位表示符号,11位表示阶码,52位表示尾数

     5. JS中所有数字,均使用双精度浮点数保存

类型化数组:用于优化多个数字的存储

  • Int8Array:8位有符号整数,长度1个字节。(-128-127)
  • Uint8Array:8位无符号整数,长度1个字节。(0-255)还有一种类型 Uint8ClampedArray
  • Int16Array:16位有符号整数,长度2个字节。
  • Uint16Array:16位无符号整数,长度2个字节。
  • Int32Array:32位有符号整数,长度4个字节。
  • Uint32Array:32位无符号整数,长度4个字节。
  • Float32Array:32位浮点数,长度4个字节。
  • Float64Array:64位浮点数,长度8个字节。

使用方法跟普通数组一致 但是:

不能增加和删除数据,类型化数组的长度固定

一些返回数组的方法,返回的数组是同类型化的新数组

 基础概念可参考以下连接

ECMAScript 6 入门:ArrayBuffer_js arraybuffer 赋值-CSDN博客

ArrayBuffer

一个对象,用于存储一块固定内存大小的数据

1.创建了一个用于存储10个字节的内存空间

const buff = new ArrayBuffer(10)
console.log(buff)
const buff2 = buff.slice()
console.log(buff2)
const buff3 = buff.slice(3, 5)
console.log(buff3)

 2.创建dataview视图指向该内存区域

const view = new DataView(buff, 3, 4)
console.log(view)

3.set 写入 get  读取

arg1 偏移量 arg2值

view.setInt8(1, 3)
const a = view.getInt8(1)
console.log("查询偏移位置为1的数据:", a)
console.log(view)

4.使用DataView 

通常在需要混用多种存储格式时使用DataView

5.使用类型化数组操作

const buff = new ArrayBuffer(10)//10个字节的内存
const arr = new Int16Array(buff)
arr[0] = 2344//操作了2个字节
console.log(arr)

6.彩色图片转成黑白

<img src="./assets/dog.png" alt="" width="250" height="250" />
<button onclick="change()">转换</button>
<canvas height="250" width="250" id="cvs"></canvas>
//把一个图像变成黑白,设置红绿蓝平均数即可
function change () {const img = document.querySelector('img')const cvs = document.getElementById('cvs').getContext('2d')cvs.drawImage(img, 0, 0)const imageData = cvs.getImageData(0, 0, img.width, img.height)const data = imageData.datafor (let i = 0; i < data.length; i += 4) {const red = imageData.data[i]const green = imageData.data[i + 1]const blue = imageData.data[i + 2]const avg = (red + green + blue) / 3data[i] = data[i + 1] = data[i + 2] = red}cvs.putImageData(imageData, 0, 0)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/670997.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

通义千问上线春节新应用,AI帮你免费拍全家福

2月5日&#xff0c;春节将至年味渐浓&#xff0c;阿里云通义千问APP上线多项免费新应用&#xff0c;涵盖全家福、拜新年、万物成龙等图像生成的新玩法&#xff0c;共提供超300套照片模板&#xff0c;用户上传照片即可生成全家福、团圆照、拜年照、千里江山主题照&#xff1b;此…

七月论文审稿GPT第2.5和第3版:分别微调GPT3.5、Llama2 13B以扩大对GPT4的优势

前言 自去年7月份我带队成立大模型项目团队以来&#xff0c;我司至今已有5个项目组&#xff0c;其中 第一个项目组的AIGC模特生成系统已经上线在七月官网第二项目组的论文审稿GPT则将在今年3 4月份对外上线发布第三项目组的RAG知识库问答第1版则在春节之前已就绪至于第四、第…

Jupyter Notebook中的%matplotlib inline详解

Jupyter Notebook中的%matplotlib inline详解 &#x1f335;文章目录&#x1f335; &#x1f333;引言&#x1f333;&#x1f333;什么是魔术命令&#x1f333;&#x1f333;%matplotlib inline详解&#x1f333;(&#x1f448;直入主题请点击)&#x1f333;小结&#x1f333;&…

深入理解Java中的二叉树

目录 一、什么是二叉树? 二、二叉树的主要类型 三、二叉树的实现 四、二叉树的应用 五、关于二叉树的题目 引言: 二叉树是计算机科学中常用的一种数据结构&#xff0c;它是由节点组成的层级结构&#xff0c;每个节点最多有两个子节点。在Java编程语言中&#xff0c;二…

c#cad 创建-多线段(三)

运行环境 vs2022 c# cad2016 调试成功 一、程序说明 AutoCAD中创建多段线的。具体解释如下&#xff1a; 获取当前文档和数据库&#xff0c;并创建一个编辑器&#xff08;用于与用户交互&#xff09;。使用事务处理的方式&#xff0c;开始对数据库的操作。打开模型空间&…

2.1 Verilog 基础语法

格式 Verilog 是区分大小写的。 格式自由&#xff0c;可以在一行内编写&#xff0c;也可跨多行编写。 每个语句必须以分号为结束符。空白符&#xff08;换行、制表、空格&#xff09;都没有实际的意义&#xff0c;在编译阶段可忽略。例如下面两中编程方式都是等效的。 不换…

机构撤销,子机构挂到新机构下的问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、场景二、问题三、解决 一、场景 将一个机构撤销&#xff0c;然后撤销机构的子机构挂到新机构下 二、问题 将子机构挂到新机构后&#xff0c;涉及ancestors这…

110 C++ STL 迭代器的概念和分类

一。迭代器基本概念 迭代器是一个 “可以遍历STL容器全部或者部分元素”的对象。 这个对象类似于指针的作用。 迭代器用来表现容器中的某一个位置。 迭代器紧密依赖于容器&#xff0c;迭代器是由容器来提供的&#xff0c;也就是说&#xff1a;一般来说&#xff0c;是容器里…

Git的一些基本操作

初始git 我们给出下面的一个场景&#xff0c;在大学里&#xff0c;一些老师在我们做完实验之后喜欢让我们交实验报告&#xff0c;假设我们有一个比较追求完美的老师和一个勤奋的学生&#xff0c;这个学生叫做小帅&#xff0c;那天小帅桑勤奋的完成实验报告&#xff0c;在第二天…

[C/C++] -- JSON for Modern C++

JSON for Modern C&#xff08;nlohmann/json&#xff09;是一个流行的 C JSON 库&#xff0c;由德国开发者nlohmann编写。这个库提供了简洁而灵活的 API&#xff0c;使得在C中解析和生成JSON数据变得非常方便。 1.JSON简介 JSON&#xff08;JavaScript Object Notation&…

JavaScript:URL参数中如果有+(加号)要对参数进行编码

后台对参数进行编码的方法 URLEncoder.encode(str); 后台取参数值时直接写&#xff1a; String strFileCode request.getParameter("filecode"); 附&#xff1a; java没有方法对应javascript 的escape/unescape java.net.URLDecoder / java.net.URLEncoder 这两…

台灯学生用哪个牌子好?学生用护眼台灯品牌推荐

晚上学习&#xff0c;有台灯肯定比没台灯好。只要是盏合格的、能用的台灯&#xff0c;都能给你一个稳定又亮堂的环境。但是有些不合格的台灯会给眼睛带来伤害&#xff0c;尤其是学习负担比较重的学生。那有哪些台灯是学生用着比较好用的呢&#xff1f; 一、学生使用护眼台灯的…

图数据库neo4j入门

neo4j 一、安装二、简单操作<一>、创建<二>、查询<三>、关系<四>、修改<五>、删除 三、常见报错<一>、默认的数据库密码是neo4j,打开浏览器http://localhost:7474登录不上,报错: Neo.ClientError.Security.Unauthorized: The client is un…

#Z0463. 巡逻1

Description 在一个地区中有 n 个村庄&#xff0c;编号为 1, 2, ..., n。有 n – 1 条道路连接着这些村 庄&#xff0c;每条道路刚好连接两个村庄&#xff0c;从任何一个村庄&#xff0c;都可以通过这些道路到达其 他任一个村庄。每条道路的长度均为 1 个单位。 为保证该地区的…

系统架构设计师-22年-上午答案

系统架构设计师-22年-上午答案 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与 SaaS PaaS Iaas相对应&#xff0c;图中①、②、③应为(1) #mermaid-svg-xqMbIVMC8pWrne2L {font-family:"trebuch…

golang开源定时任务调度框架

golang开源定时任务调度框架 Go语言中有很多开源的定时任务调度框架&#xff0c;以下几个是比较流行常用的&#xff1a; golang开源定时任务框架介绍 cron 一个基于Cron表达式的定时任务库&#xff0c;可以精确到秒级。它提供了简单易用的API来定义和管理定时任务&#xff…

力扣(leetcode)第268题丢失的数字(Python)

268.丢失的数字 题目链接&#xff1a;268.丢失的数字 给定一个包含 [0, n] 中 n 个数的数组 nums &#xff0c;找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1&#xff1a; 输入&#xff1a;nums [3,0,1] 输出&#xff1a;2 解释&#xff1a;n 3&#xff0c;因为…

MySQL与PgSQL的优缺点对比

在当今的数据驱动时代&#xff0c;各种数据库管理系统&#xff08;DBMS&#xff09;层出不穷&#xff0c;每种数据库都有其独特的特点和适用场景。以下是对几种常见数据库的优缺点以及应用场景的详细介绍。 1、MySQL 优点&#xff1a; 易用性&#xff1a;MySQL 是一个开源的…

Z Algorithm(扩展KMP)算法笔记

假设给定一个s长度为的n字符串。那么这个字符串的 z-function &#xff08;“zet-function”&#xff09;是一个长度为 的数组&#xff0c;其中的 -th 元素等于最大字符数&#xff0c;从 position i开始&#xff0c;i与字符串的第一个字符n重合。 换句话说&#xff0c;z[i]它是…

mysql数据库使用mysqlbinlog命令查看数据操作、主从数据同步记录

mysql主从同步时&#xff0c;由于意外的操作&#xff0c;可能会出现下面的错误&#xff1a; Could not execute Update_rows event on table confluence.AO_92296B_AORECENTLY_VIEWED; Can’t find record in ‘AO_92296B_AORECENTLY_VIEWED’, Error_code: 1032; handler erro…