计算机中数的表示

0. 简介

介绍计算机中数的表示方法,主要内容来自 c s a p p csapp csapp

1. 整数的表示

包括有符号整数与无符号整数的表示。

假设
w → = [ w n − 1 w n − 2 . . . w 0 ] \overrightarrow w=[w_{n-1}w_{n-2}...w_0] w =[wn1wn2...w0]
为一种整数。

1.1 无符号整数

计算机是二进制的,且数据长度固定。

所以无符号二进制数实际上直接表示即可。

B 2 U ( w → ) = ∑ i = 0 n − 1 w i × 2 i B2U(\overrightarrow w)=\sum_{i=0}^{n-1}w_i \times 2^{i} B2U(w )=i=0n1wi×2i

1.2 有符号整数
  1. 补码编码
    最高位来表示符号位
    B 2 T ( w → ) = − w n − 1 ∗ 2 n − 1 + ∑ i = 0 n − 2 w i × 2 i B2T(\overrightarrow w)=-w_{n-1}*2^{n-1}+\sum_{i=0}^{n-2}w_i\times2^i B2T(w )=wn12n1+i=0n2wi×2i
    所以范围为有符号整数范围为 − 2 n − 1 ∼ 2 n − 1 − 1 -2^{n-1}\sim 2^{n-1}-1 2n12n11

  2. 反码编码
    B 2 O ( w → ) = − w n − 1 ∗ ( 2 n − 1 − 1 ) + ∑ i = 0 n − 2 w i × 2 i B2O(\overrightarrow w)=-w_{n-1}*(2^{n-1}-1)+\sum_{i=0}^{n-2}w_i\times2^i B2O(w )=wn1(2n11)+i=0n2wi×2i

  3. 原码编码
    B 2 S ( w → ) = ( − 1 ) w n − 1 ⋅ ∑ i = 0 n − 2 w i × 2 i B2S(\overrightarrow w)=(-1)^{w_{n-1}} \cdot \sum_{i=0}^{n-2}w_i \times2^i B2S(w )=(1)wn1i=0n2wi×2i

为什么使用补码?原码和反码的表示中,对于 0 0 0的表示有歧义。 + 0 ( 0000 0000 ) +0(0000\ 0000) +0(0000 0000) − 0 ( 1000 0000 ) -0(1000\ 0000) 0(1000 0000)

1.3 有符号数与无符号数间转换

无符号数转有符号数
B 2 U ( w → ) = ∑ i = 0 n − 1 w i × 2 i = w n − 1 ∗ 2 n − 1 + ∑ i = 0 n − 2 w i × 2 i B 2 T ( w → ) = − w n − 1 ∗ 2 n − 1 + ∑ i = 0 n − 2 w i × 2 i \begin{align} B2U(\overrightarrow w)=\sum_{i=0}^{n-1}w_i \times 2^i=w_{n-1} *2^{n-1} +\sum_{i=0}^{n-2}w_i \times 2^i\\ B2T(\overrightarrow w)=-w_{n-1}*2^{n-1}+\sum_{i=0}^{n-2}w_i\times2^i \end{align} B2U(w )=i=0n1wi×2i=wn12n1+i=0n2wi×2iB2T(w )=wn12n1+i=0n2wi×2i
( 2 ) − ( 1 ) (2)-(1) (2)(1)得到
B 2 T ( w → ) − B 2 U ( w → ) = − w n − 1 ∗ 2 n B2T(\overrightarrow w)-B2U(\overrightarrow w)=-w_{n-1} *2^{n} B2T(w )B2U(w )=wn12n
所以
U 2 T ( w → ) = − w n − 1 ∗ 2 n + B 2 U ( w → ) U2T(\overrightarrow w)=-w_{n-1}*2^n+B2U(\overrightarrow w) U2T(w )=wn12n+B2U(w )
分类讨论下最高位情况
l e t u = B 2 U ( w → ) U 2 T ( u ) = { u , u ≤ T M a x n ( w n − 1 = 1 ) u − 2 n , u > T M a x n let\ u=B2U(\overrightarrow{w})\\ \begin{equation} U2T(u )= \begin{cases} u,\quad u \le TMax_{n}(w_{n-1} =1)\\ u-2^n,\quad u \gt TMax_{n} \end{cases} \end{equation} let u=B2U(w )U2T(u)={u,uTMaxn(wn1=1)u2n,u>TMaxn

同理可得有符号转无符号数
B 2 U ( w → ) = U 2 T ( w → ) + w n − 1 ∗ 2 n B2U(\overrightarrow w)=U2T(\overrightarrow w)+w_{n-1}*2^n B2U(w )=U2T(w )+wn12n
同样分类讨论最高位情况
l e t t = U 2 T ( w → ) T 2 U ( t ) = { t , t ≥ 0 ) t + 2 n , t < 0 let\ t=U2T(\overrightarrow w)\\ \begin{equation} T2U(t)= \begin{cases} t,\quad t \ge 0)\\ t+2^n,\quad t \lt 0 \end{cases} \end{equation} let t=U2T(w )T2U(t)={t,t0)t+2n,t<0

1.4 数位扩展

无符号数扩展,直接在前面添加 0 0 0即可。

u → = [ u n − 1 u n − 2 ⋯ u 0 ] u ′ → = [ 0 ⋯ u n − 1 ⋯ u 0 ] \overrightarrow u=[u_{n-1}u_{n-2}\cdots u_0]\\ \overrightarrow {u'}= [0\cdots u_{n-1}\cdots u_0] u =[un1un2u0]u =[0un1u0]
根据
B 2 U ( w → ) = ∑ i = 0 n − 1 w i × 2 i B2U(\overrightarrow w)=\sum_{i=0}^{n-1}w_i \times 2^{i} B2U(w )=i=0n1wi×2i
u → = u ′ → \overrightarrow {u}=\overrightarrow{u'} u =u

补码符号扩展,在前面不断添加最高位数字即可

证明
B 2 T t + k ( [ w t − 1 w t − 1 w t − 2 ⋯ w 0 ] ) = − 2 t + k − 1 ∗ w n − 1 + ∑ i = 0 t + k − 2 2 i ∗ w i = − 2 t + k − 1 ∗ w t − 1 + 2 t + k − 2 ∗ w t − 1 + ∑ i = 0 t + k − 3 2 i ∗ w i = − 2 t + k − 2 ∗ w t − 1 + ∑ i = 0 t + k − 3 2 i ∗ w i ⋯ = − 2 t − 1 ∗ w t − 1 + ∑ i = 0 t − 2 2 i ∗ w i = B 2 T t ( w t − 1 w t − 2 ⋯ w 0 ) \begin{align} B2T_{t+k}([w_{t-1}w_{t-1}w_{t-2}\cdots w_0]) &= -2^{t+k-1}*w_{n-1}+\sum_{i=0}^{t+k-2}2^{i} *w_i \nonumber\\ &= -2^{t+k-1}*w_{t-1}+2^{t+k-2}*w_{t-1}+\sum_{i=0}^{t+k-3}2^{i} *w_i \nonumber\\ &=-2^{t+k-2}*w_{t-1}+\sum_{i=0}^{t+k-3}2^{i} *w_i \nonumber\\ &\cdots \nonumber \\ &=-2^{t-1} *w_{t-1} + \sum_{i=0}^{t-2}2^{i} *w_i \nonumber \\ &= B2T_{t}(w_{t-1}w_{t-2}\cdots w_0) \nonumber \end{align} B2Tt+k([wt1wt1wt2w0])=2t+k1wn1+i=0t+k22iwi=2t+k1wt1+2t+k2wt1+i=0t+k32iwi=2t+k2wt1+i=0t+k32iwi=2t1wt1+i=0t22iwi=B2Tt(wt1wt2w0)

1.5 数位截断

无符号数的截断,直接取 k k k位即可。

证明
B 2 U t ( [ w t − 1 w t − 2 ⋯ w 0 ] ) m o d 2 k = [ ∑ i = 0 t − 1 w i ∗ 2 i ] m o d 2 k = [ ∑ i = 0 k − 1 w i ∗ 2 i ] m o d 2 k = [ ∑ i = 0 k − 1 w i ∗ 2 i ] = B 2 U k ( w k − 1 w k − 2 ⋯ w 0 ) \begin{align} B2U_t([w_{t-1}w_{t-2}\cdots w_0]) \bmod 2^k &=[\sum_{i=0}^{t-1}w_i *2^i] \bmod 2^k \nonumber\\ &= [\sum_{i=0}^{k-1}w_i *2^i] \bmod 2^k \nonumber\\ &= [\sum_{i=0}^{k-1}w_i *2^i] \nonumber\\ &= B2U_k(w_{k-1}w_{k-2} \cdots w_0)\nonumber\\ \end{align} B2Ut([wt1wt2w0])mod2k=[i=0t1wi2i]mod2k=[i=0k1wi2i]mod2k=[i=0k1wi2i]=B2Uk(wk1wk2w0)
利用了
∀ i > = k , 2 i m o d 2 k = 0 \forall i>=k, 2^i \bmod2^k=0 i>=k,2imod2k=0
有符号数(补码)的截断
B 2 T t ( [ w t − 1 w t − 2 ⋯ w 0 ] ) m o d 2 k = U 2 T t ( B 2 U t ( [ w t − 1 w t − 2 ⋯ w 0 ] ) ) m o d 2 k l e t u = B 2 U t ( [ w t − 1 w t − 2 ⋯ w 0 ] ) 根据公式 ( 3 ) = [ u − ( i × 2 t ) ] m o d 2 k = u m o d 2 k = U 2 T t ( B 2 U t ( [ w t − 1 w t − 2 ⋯ w 0 ] ) m o d 2 k ) \begin{align} B2T_t([w_{t-1}w_{t-2}\cdots w_0]) \bmod 2^k&= U2T_t(B2U_t([w_{t-1}w_{t-2}\cdots w_0])) \bmod 2^k \nonumber \\ &let\ u =B2U_t([w_{t-1}w_{t-2}\cdots w_0])\nonumber \\ 根据公式(3)\nonumber \\ &=[u-(i \times 2^{t})] \bmod 2^k\nonumber \\ &= u \bmod 2^k\nonumber\\ &= U2T_t(B2U_t([w_{t-1}w_{t-2}\cdots w_0])\bmod 2^k) \nonumber \\ \end{align} B2Tt([wt1wt2w0])mod2k根据公式(3)=U2Tt(B2Ut([wt1wt2w0]))mod2klet u=B2Ut([wt1wt2w0])=[u(i×2t)]mod2k=umod2k=U2Tt(B2Ut([wt1wt2w0])mod2k)

2. 整数的运算

2.1 整数加法

无符号整数加法

∀ x , y , 0 ≤ x , y < 2 w x + w u y = { x + y , x + y < 2 w x + y − 2 w , 2 w ≤ x + y < 2 w + 1 ( 溢出 ) \forall x,y, 0 \le x,y\lt2^w\\ x+^{u}_{w}y= \begin{cases} x+y, \quad x+y \lt 2^w\\ x+y-2^w,\quad 2^{w} \le x+y \lt 2^{w+1}(溢出) \end{cases} x,y,0x,y<2wx+wuy={x+y,x+y<2wx+y2w,2wx+y<2w+1(溢出)

检测无符号数
∀ x , y , 0 ≤ x , y < 2 w l e t s = x + w u y , s < x 则发生溢出。 溢出时, x + w u y = x + y − 2 w x , y < 2 w y − 2 w < 0 , x − 2 w < 0 x + y − 2 w < x , y + x − 2 w < y \forall x,y, 0 \le x,y\lt2^w\\ let\ s=x+^{u}_wy,s<x则发生溢出。\\ 溢出时,x+^{u}_wy=x+y-2^w\\ x,y \lt 2^w\\ y-2^{w} \lt 0,x-2^w \lt 0\\ x+y-2^w \lt x,y+x-2^w \lt y x,y,0x,y<2wlet s=x+wuys<x则发生溢出。溢出时,x+wuy=x+y2wx,y<2wy2w<0,x2w<0x+y2w<x,y+x2w<y
无符号数求反
− w u x = { 0 , x = 0 2 w − x , x ≠ 0 -^u_wx= \begin{cases} 0, \quad x=0\\ 2^w-x, x \ne 0 \end{cases} wux={0,x=02wx,x=0

补码加法
∀ x , y , − 2 w − 1 ≤ x , y ≤ 2 w − 1 − 1 x + w t y = { x + y − 2 w , 2 w − 1 ≤ x + y x + y , − 2 w − 1 ≤ x + y ≤ 2 w − 1 x + y + 2 w , x + y ≤ − 2 w − 1 \forall x,y, -2^{w-1} \le x, y \le 2^{w-1} -1\\ x+^{t}_{w}y= \begin{cases} x+y-2^w, \quad 2^{w-1}\le x+y\\ x+y,\quad -2^{w-1} \le x+y \le 2^{w-1}\\ x+y+2^{w},\quad x+y\le -2^{w-1} \end{cases} x,y,2w1x,y2w11x+wty= x+y2w,2w1x+yx+y,2w1x+y2w1x+y+2w,x+y2w1
由于补码表示与无符号位表示相似

则我们可以转换为无符号再进行计算

x + w t y = U 2 T w ( T 2 U w ( x ) + T 2 U w ( y ) ) = U 2 T w [ ( x w − 1 2 w + x + y w − 1 2 w + y ) m o d 2 w ] = U 2 T w [ ( x + y ) m o d 2 w ] \begin{align} x+^t_wy&= U2T_w(T2U_w(x)+T2U_w(y)) \nonumber \\ &= U2T_w[(x_{w-1}2^w+x+y_{w-1}2^w+y) \bmod 2^w]\nonumber \\ &= U2T_w[(x+y) \bmod 2^w]\nonumber \\ \end{align} x+wty=U2Tw(T2Uw(x)+T2Uw(y))=U2Tw[(xw12w+x+yw12w+y)mod2w]=U2Tw[(x+y)mod2w]
检测补码加法中的溢出
s = x + w t y x > 0 , y > 0 , s ≤ 0 , 正溢出 x < 0 , y < 0 , s ≥ 0 负溢出 s=x+^t_wy\\ x \gt 0, y \gt 0,s\le0,正溢出\\ x \lt 0,y\lt 0,s \ge 0负溢出 s=x+wtyx>0,y>0,s0,正溢出x<0,y<0,s0负溢出
补码的非
− w t x = { T m i n w , x = T m i n w − x , x > T m i n w -^t_wx = \begin{cases} Tmin_w, \quad x=Tmin_w\\ -x,\quad x \gt Tmin_w \end{cases} wtx={Tminw,x=Tminwx,x>Tminw

2.2 整数乘法

无符号乘法
x ∗ w u y = ( x ∗ y ) m o d 2 w x * ^u_wy=(x*y) \bmod 2^w xwuy=(xy)mod2w

补码乘法

x ∗ w t y = U 2 T w ( ( x ∗ y ) m o d 2 w ) x * ^t_wy=U2T_w((x*y) \bmod 2^w) xwty=U2Tw((xy)mod2w)

证明
T 2 B w ( x ∗ w t y ) = U 2 B w ( x ′ ∗ w t y ′ ) x ′ = x + x w − 1 2 w y ′ = y + y w − 1 w w ( x ′ ∗ y ′ ) m o d 2 w = ( x + x w − 1 2 w ) ( y + y w − 1 2 w ) m o d 2 w = ( x y ) m o d 2 w T2B_w(x*^t_wy)=U2B_w(x'*^t_wy')\\ x' = x +x_{w-1}2^w\\ y' = y+y_{w-1}w^w\\ (x' * y') \bmod 2^w= (x +x_{w-1}2^w)(y+y_{w-1}2^w) \bmod 2^w=(xy) \bmod 2^w T2Bw(xwty)=U2Bw(xwty)x=x+xw12wy=y+yw1ww(xy)mod2w=(x+xw12w)(y+yw12w)mod2w=(xy)mod2w
乘以2的 k k k次幂,左移 k k k
B 2 U w + k ( [ x w − 1 x w − 2 ⋯ 0 ] ) = ∑ i = 0 w − 1 x i 2 i + k = [ ∑ i = 0 w − 1 x i 2 i ] × 2 k = x 2 k B2U_{w+k}([x_{w-1}x_{w-2}\cdots 0]) = \sum_{i=0}^{w-1}x_i2^{i+k}=[\sum_{i=0}^{w-1}x_i2^i]\times2^k=x2^k B2Uw+k([xw1xw20])=i=0w1xi2i+k=[i=0w1xi2i]×2k=x2k

3. 浮点数

3.1 浮点数表示

V = ( − 1 ) s × M × 2 E V=(-1)^s\times M \times2^E V=(1)s×M×2E
在内存中的布局
在这里插入图片描述

E = e − B i a s e = B 2 U ( e k − 1 e k − 2 ⋯ e 0 ) B i a s = 2 k − 1 − 1 f = B 2 U ( [ f n − 1 f n − 2 ⋯ f 0 ] ) / 2 n E=e-Bias\\ e=B2U(e_{k-1}e_{k-2}\cdots e_0)\\ Bias=2^{k-1}-1\\ f=B2U([f_{n-1}f_{n-2} \cdots f_0])/2^{n} E=eBiase=B2U(ek1ek2e0)Bias=2k11f=B2U([fn1fn2f0])/2n
总体分三种情况

  1. 标准化值
    阶码部分不全为0或不全为1
    M = 1 + f M=1+f M=1+f
  2. 非标准化值
    阶码部分全为0
    M = f M=f M=f
  3. 特殊值
    阶码全为1,小数域全为0,对应 − ∞ , + ∞ -\infin ,+\infin ,+,
    小数域非0,对应 N a N NaN NaN,表示不是一个数。

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

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

相关文章

【Frida】【Android】09_爬虫之Socket

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

2024 年广东省职业院校技能大赛(高职组)“云计算应用”赛项样题 3

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件…

江协科技STM32:TIM输出比较

输出比较模块的主要功能&#xff1a;输出一定频率和占空比的PWM波形 CC是捕获比较的意思,R是Register&#xff0c;寄存器的意思&#xff0c;CCR捕获比较寄存器它是输入捕获和输出比较共用的 当使用输入捕获&#xff0c;它就是捕获寄存器 当使用输出比较&#xff0c;它就是比…

蓝桥杯每日一题:斐波那契(矩阵乘法)

在斐波那契数列中&#xff0c;Fib00,Fib11,FibnFibn−1Fibn−2(n>1) 给定整数 n&#xff0c;求 Fibnmod10000。 输入格式 输入包含不超过 100100 组测试用例。 每个测试用例占一行&#xff0c;包含一个整数 当输入用例 n−1时&#xff0c;表示输入终止&#xff0c;且该…

自由定义表单table组件(antdesign版)

对表单自由排序&#xff0c;决定哪些列显示隐藏&#xff0c;能保存设置过的操作 效果图 使用页&#xff0c;操作列dataIndex要设置为action&#xff0c;forKey必需是唯一的 用的vue2版的antdesign vue写的样式&#xff0c;想用其它的ui框架可以自行修改样式 <customTable …

Brain.js 的力量:构建多样化的人工智能应用程序

机器学习&#xff08;ML&#xff09;是人工智能 (AI) 的一种形式&#xff0c;旨在构建可以从处理的数据中学习或使用数据更好地执行的系统。人工智能是模仿人类智能的系统或机器的总称。 机器学习&#xff08;ML&#xff09;与复杂的数学纠缠在一起&#xff0c;让大多数初学者…

解决nginx代理后,前端拿不到后端自定义的header

先说结论&#xff0c;因为前端和nginx对接&#xff0c;所以需要在nginx添加如下配置向前端暴露header add_header Access-Control-Expose-Headers Authorization 排查过程 1.后端设置了Authorization 的响应头作为token的返回&#xff0c;前后端本地联调没有问题 response.s…

嵌入式驱动学习第六周——内核函数调用(堆栈打印)

前言 在内核中&#xff0c;函数调用堆栈非常重要&#xff0c;因为它可以帮助开发人员理解代码是如何执行的&#xff0c;从而进行调试、性能优化或问题排查。堆栈可以显示当前执行的函数以及导致该函数调用的先前函数&#xff0c;从而形成一个函数调用链。本篇博客就介绍堆栈打印…

软件无线电原理

常规软件无线电接收器&#xff1a; 首先&#xff0c;来自天线的射频信号被放大&#xff0c;通常射频部分利用一个调谐器将感兴趣的频段区域的信号进行放大。这个放大的射频信号被送入一个混频器。来自本振的信号也被送入混频器&#xff0c;其频率由无线电的调谐控制决定。混频器…

【LeetCode】--- 动态规划 集训(二)

目录 一、63. 不同路径 II1.1 题目解析1.2 状态转移方程1.3 解题代码 二、931. 下降路径最小和2.1 题目解析2.2 状态转移方程2.3 解题代码三、174. 地下城游戏3.1 题目解析3.2 状态转移方程3.3 解题代码 一、63. 不同路径 II 题目地址&#xff1a; 不同路径 II 一个机器人位于…

传输层 --- TCP (下篇)

目录 1. 超时重传 1.1. 数据段丢包 1.2. 接收方发送的ACK丢包 1.3. 超时重传的超时时间如何设置 2. 流量控制 3. 滑动窗口 3.1. 初步理解滑动窗口 3.2. 滑动窗口的完善理解 3.3. 关于快重传的补充 3.4. 快重传和超时重传的区别 4. 拥塞控制 4.1. 拥塞控制的宏观认识…

「 典型安全漏洞系列 」11.身份验证漏洞详解

身份验证是验证用户或客户端身份的过程。网站可能会暴露给任何连接到互联网的人。这使得健壮的身份验证机制成为有效的网络安全不可或缺的一部分。 1. 什么是身份验证 身份验证即认证&#xff0c;是验证给定用户或客户端身份的过程。身份验证漏洞使攻击者能够访问敏感数据和功…

Linux网络基础 (三) —— Socket

文章目录 Socket 编程基本概念Socket背景Socket 为了解决什么问题 socketsockaddr结构sockaddrsockaddr_insockaddr 和 sockaddr_in 的关系sockaddr_un 示例代码 &#x1f396; 博主的CSDN主页&#xff1a;Ryan.Alaskan Malamute &#x1f4dc; 博主的代码仓库主页 [ Gitee ]&…

【MySQL】数据操作语句(DML)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习计网、mysql和算法 ✈️专栏&#xff1a;MySQL学习 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

【论文通读】AgentStudio: A Toolkit for Building General Virtual Agents

AgentStudio: A Toolkit for Building General Virtual Agents 前言AbstractMotivationFramework评估GUI GroudingReal-World Cross-Application Benchmark Suite Conclusion 前言 来自昆仑万象的一篇智能体环境数据大一统框架工作&#xff0c;对未来计算机智能体的发展具有指…

FPGA常用IP核之FIFO学习

IP核是FPGA芯片公司提供的逻辑功能块&#xff0c;在FPGA芯片中可以进行优化和预先配置&#xff0c;可以直接在用户设计的程序中使用&#xff0c;应用范围很广。在FPGA设计开发过程中使用IP核&#xff0c;可以大大的缩短开发周期&#xff0c;高度优化的IP核可以使FPG开发工程师专…

前端三剑客 —— CSS (第六节)

目录 内容回顾&#xff1a; 弹性布局属性介绍 案例演示 商品案例 布局分析 登录案例 网格布局 内容回顾&#xff1a; 变量&#xff1a;定义变量使用 --名称&#xff1a;值&#xff1b; 使用变量&#xff1a; 属性名&#xff1a;var&#xff08;--名称&#xff09;&a…

虚拟主机、VPS主机和云服务器的区别

对于每个建站新手来说&#xff0c;首先要解决的就是服务器购买的问题&#xff0c;目前市面有很多类型的服务器&#xff0c;常见的有&#xff1a;阿里云、腾讯云、Vultr云服务器&#xff0c;也有RackNerd、Cloudways等提供的VPS&#xff0c;还有SiteGround、ChemiCloud 、 Hosti…

数据结构之堆底层实现的循序渐进

题外话 把没写的都补回来! 正题 堆 概念 堆是一棵完全二叉树&#xff0c;因此可以层序的规则采用顺序的方式来高效存储&#xff0c; 大根堆:指根结点比左右孩子都大的堆 小根堆:指根结点比左右孩子都小的堆 性质 1.堆中某个节点的值总是不大于或不小于其父节点的值 2…

鸿蒙OS元服务开发:【(Stage模型)设置应用主窗口】

一、设置应用主窗口说明 在Stage模型下&#xff0c;应用主窗口由UIAbility创建并维护生命周期。在UIAbility的onWindowStageCreate回调中&#xff0c;通过WindowStage获取应用主窗口&#xff0c;即可对其进行属性设置等操作。还可以在应用配置文件中设置应用主窗口的属性&…