二进制浮点数以及二进制浮点数算术运算

  • 二进制浮点数表示
    • 半精度浮点数
    • 单精度浮点数
    • 双精度浮点数
    • 特殊情况
  • 浮点数的运算步骤
    • 一、对阶
    • 二、尾数运算
    • 三、结果规格化
      • 左规操作
      • 右规操作
    • 四、 舍入处理
    • 五、 溢出判断
    • 六、例子
      • 二进制浮点数加法
      • 二进制浮点数减法
      • 二进制浮点数乘法
      • 二进制浮点数除法
  • 浮点运算逻辑电路
  • Reference

二进制浮点数表示


阶码(指数)就是指数位存储的值,而偏阶(移码)则不同精度的浮点数的偏阶也各不相同,具体可以查看指数偏差。
B i a s = 2 k − 1 − 1 Bias=2^{k-1}-1 Bias=2k−1−1, 其中k是指数中的位数。

半精度浮点数

半精度浮点数 是一种被计算机使用的二进制浮点数据类型。半精度浮点数使用2个字节(16位)来存储。
在IEEE 754-2008中,它被称作binary16。这种数据类型只适合存储对精度要求不高的数字,不适合用来计算。

IEEE 754 标准指定了一个 binary16 要有如下的格式:
Sign bit(符号位): 1 bit
Exponent width(指数位宽): 5 bits
Significand precision(尾数精度): 11 bits (有10位被显式存储)

按如下顺序排列:

除非指数位全是0,否则就会假定隐藏的起始位是1。因此只有10位尾数在内存中被显示出来,而总精度是11位。据IEEE 754的说法,虽然尾数只有10位,但是尾数精度是11位的(log10(211) ≈ 3.311 十进制数).

单精度浮点数

单精度浮点数 格式是一种数据类型,在计算机存储器中占用4个字节(32 bits),利用“浮点”(浮动小数点)的方法,可以表示一个范围很大的数值。

第1位表示正负,中间8位表示指数,后23位储存有效数位(有效数位是24位)。

第一位的正负号0代表正,1代表负。

中间八位共可表示 2 8 = 256 2^8=256 28=256个数,指数可以是二补码;或0到255,0到126代表-127到-1,127代表零,128-255代表1-128。

有效数位最左手边的1并不会储存,因为它一定存在(二进制的第一个有效数字必定是1)。换言之,有效数位是24位,实际储存23位。


s i g n = + 1 sign = +1 sign=+1
e x p o n e n t = ( − 127 ) + 124 = − 3 exponent = (-127)+124=-3 exponent=(−127)+124=−3
f r a c t i o n = 1 + 2 − 2 = 1.25 fraction=1+2^{-2}=1.25 fraction=1+2−2=1.25
v a l u e = ( + 1 ) × 1.25 × 2 − 3 = + 0.15625 value=(+1)\times1.25\times2^{-3}=+0.15625 value=(+1)×1.25×2−3=+0.15625

双精度浮点数

双精度浮点数(double)是计算机使用的一种资料类型。比起单精度浮点数,双精度浮点数(double)使用 64 位(8字节) 来存储一个浮点数。 它可以表示二进位制的53位有效数字,其可以表示的数字的绝对值范围为 [ 2 − 1024 , 2 1024 ] [2^{-1024}, 2^{1024}] [2−1024,21024]。

特殊情况

以双精度浮点数为例,说明一些特殊情况

当指数exponent全为0或者全为1时,有特殊含义,有以下四种情况,
1、 e x p o n e n t = 0 , f r a c t i o n = 0 ⇒ ± 0 exponent=0, fraction=0 \Rightarrow \pm0 exponent=0,fraction=0⇒±0
2、 e x p o n e n t = 0 , f r a c t i o n ≠ 0 ⇒ 非 正 规 形 式 的 浮 点 数 exponent=0, fraction\neq0 \Rightarrow 非正规形式的浮点数 exponent=0,fraction​=0⇒非正规形式的浮点数
3、 e x p o n e n t = 2047 , f r a c t i o n = 0 ⇒ ± ∞ exponent=2047, fraction=0 \Rightarrow \pm\infty exponent=2047,fraction=0⇒±∞
4、 e x p o n e n t = 2047 , f r a c t i o n ≠ 0 ⇒ N a N exponent=2047, fraction\neq0 \Rightarrow NaN exponent=2047,fraction​=0⇒NaN

浮点数的运算步骤

浮点数的加减运算一般由以下五个步骤完成:对阶、尾数运算、规格化、舍入处理、溢出判断

一、对阶

所谓对阶是指将两个进行运算的浮点数的阶码对齐的操作。对阶的目的是为使两个浮点数的尾数能够进行加减运算。因为,当进行 M x ⋅ 2 E x M_x·2^{E_x} Mx​⋅2Ex​与 M y ⋅ 2 E y M_y·2^{E_y} My​⋅2Ey​加减运算时,只有使两浮点数的指数值部分相同,才能将相同的指数值作为公因数提出来,然后进行尾数的加减运算。对阶的具体方法是:首先求出两浮点数阶码的差,即 Δ E = E x − E y \Delta E = E_x - E_y ΔE=Ex​−Ey​,将小阶码加上 Δ E \Delta E ΔE,使之与大阶码相等,同时将小阶码对应的浮点数的尾数右移相应位数,以保证该浮点数的值不变。几点注意:

(1)对阶的原则是小阶对大阶,之所以这样做是因为若大阶对小阶,则尾数的数值部分的高位需移出,而小阶对大阶移出的是尾数的数值部分的低位,这样损失的精度更小。

(2)若 Δ E \Delta E ΔE=0,说明两浮点数的阶码已经相同,无需再做对阶操作了。

(3)采用补码表示的尾数右移时,符号位保持不变。

(4)由于尾数右移时是将最低位移出,会损失一定的精度,为减少误差,可先保留若干移出的位,供以后舍入处理用。

二、尾数运算

尾数运算就是进行完成对阶后的尾数相加减。这里采用的就是我们前面讲过的纯小数的定点数加减运算。

三、结果规格化

在机器中,为保证浮点数表示的唯一性,浮点数在机器中都是以规格化形式存储的。对于IEEE754标准的浮点数来说,就是尾数必须是1.M的形式。由于在进行上述两个定点小数的尾数相加减运算后,尾数有可能是非规格化形式,为此必须进行规格化操作。

规格化操作包括左规和右规两种情况。

左规操作

将尾数左移,同时阶码减值,直至尾数成为 1. M 1.M 1.M的形式。例如,浮点数 0.0011 ∗ 2 5 0.0011*2^5 0.0011∗25是非规格化的形式,需进行左规操作,将其尾数左移3位,同时阶码减3,就变成 1.1100 ∗ 2 2 1.1100*2^2 1.1100∗22规格化形式了。

右规操作

将尾数右移1位,同时阶码增1,便成为规格化的形式了。要注意的是,右规操作只需将尾数右移一位即可,这种情况出现在尾数的最高位(小数点前一位)运算时出现了进位,使尾数成为 10. x x x x 10.xxxx 10.xxxx或 11. x x x x 11.xxxx 11.xxxx的形式。例如, 10.0011 ∗ 2 5 10.0011*2^5 10.0011∗25右规一位后便成为 1.00011 ∗ 2 6 1.00011*2^6 1.00011∗26的规格化形式了。

四、 舍入处理

浮点运算在对阶或右规时,尾数需要右移,被右移出去的位会被丢掉,从而造成运算结果精度的损失。为了减少这种精度损失,可以将一定位数的移出位先保留起来,称为保护位,在规格化后用于舍入处理。

IEEE754标准列出了四种可选的舍入处理方法:

(1)就近舍入(round to nearest)这是标准列出的默认舍入方式,其含义相当于我们日常所说的“四舍五入”。例如,对于32位单精度浮点数来说,若超出可保存的23位的多余位大于等于 100 … 01 100…01 100…01,则多余位的值超过了最低可表示位值的一半,这种情况下,舍入的方法是在尾数的最低有效位上加1;若多余位小于等于 011 … 11 011…11 011…11,则直接舍去;若多余位为 100 … 00 100…00 100…00,此时再判断尾数的最低有效位的值,若为0则直接舍去,若为1则再加1。

(2)朝 + ∞ +∞ +∞舍入(round toward + ∞ +∞ +∞)对正数来说,只要多余位不为全0,则向尾数最低有效位进1;对负数来说,则是简单地舍去。

(3)朝 − ∞ -∞ −∞舍入(round toward − ∞ -∞ −∞)与朝 + ∞ +∞ +∞舍入方法正好相反,对正数来说,只是简单地舍去;对负数来说,只要多余位不为全0,则向尾数最低有效位进1。

(4)朝0舍入(round toward 0)

即简单地截断舍去,而不管多余位是什么值。这种方法实现简单,但容易形成累积误差,且舍入处理后的值总是向下偏差。

五、 溢出判断

与定点数运算不同的是,浮点数的溢出是以其运算结果的阶码的值是否产生溢出来判断的。若阶码的值超过了阶码所能表示的最大正数,则为上溢,进一步,若此时浮点数为正数,则为正上溢,记为 + ∞ +∞ +∞,若浮点数为负数,则为负上溢,记为 − ∞ -∞ −∞;若阶码的值超过了阶码所能表示的最小负数,则为下溢,进一步,若此时浮点数为正数,则为正下溢,若浮点数为负数,则为负下溢。正下溢和负下溢都作为0处理。

要注意的是,浮点数的表示范围和补码表示的定点数的表示范围是有所不同的,定点数的表示范围是连续的,而浮点数的表示范围可能是不连续的。

六、例子

f l o a t a = 0.3 ; b = 1.6 float \ \ \ \ a=0.3;b=1.6 float    a=0.3;b=1.6;

a = ( 0.3 ) 10 = ( 0011 1110 1001 1001 1001 1001 1001 1010 ) 2 a=(0.3)_{10}=(0011\ 1110\ 1001\ 1001\ 1001\ 1001\ 1001\ 1010)_2 a=(0.3)10​=(0011 1110 1001 1001 1001 1001 1001 1010)2​
S a = 0 E a = 011 1110 1 M a = 1.001 1001 1001 1001 1001 1010 S_a=0\ \ \ \ E_a=011\ 1110\ 1\ \ \ \ M_a=1.001\ 1001\ 1001\ 1001\ 1001\ 1010 Sa​=0    Ea​=011 1110 1    Ma​=1.001 1001 1001 1001 1001 1010

b = ( 1.6 ) 10 = ( 0011 1111 1100 1100 1100 1100 1100 1101 ) 2 b=(1.6)_{10}=(0011\ 1111\ 1100\ 1100\ 1100\ 1100\ 1100\ 1101)_2 b=(1.6)10​=(0011 1111 1100 1100 1100 1100 1100 1101)2​
S b = 0 E b = 011 1111 1 M b = 1.100 1100 1100 1100 1100 1101 S_b=0\ \ \ \ E_b=011\ 1111\ 1\ \ \ M_b=1.100\ 1100\ 1100\ 1100\ 1100\ 1101 Sb​=0    Eb​=011 1111 1   Mb​=1.100 1100 1100 1100 1100 1101

a + b = ? a+b=? a+b=?

二进制浮点数加法

第一步:对阶

∵ E a < E b E b − E a = 2 ∵ E_a < E_b\ \ \ E_b-E_a=2 ∵Ea​<Eb​   Eb​−Ea​=2

∴ M a 要 调 整 为 0.0 1001 1001 1001 1001 1001 10 10 ∴ Ma要调整为 0.0\ 1001\ 1001\ 1001\ 1001\ 1001\ 10\ \ \ \ \ \ \ 10 ∴Ma要调整为0.0 1001 1001 1001 1001 1001 10       10

E = 011 1111 1 E=011\ \ 1111\ \ 1 E=011  1111  1

第二步:尾数运算

0.01001100110011001100110 \ \ \ \ 0.01001100110011001100110     0.01001100110011001100110
+ 1.10011001100110011001101 +\ 1.10011001100110011001101 + 1.10011001100110011001101
= 1.11100110011001100110011 =1.11100110011001100110011 =1.11100110011001100110011‬

第三步:规格化

1.11100110011001100110011 1.11100110011001100110011 1.11100110011001100110011‬已经是个规格化数据了

第四步:舍入处理

由于在对阶时, M a M_a Ma​有右移,且第一次最高为1,第二次为0,所以按"0舍1入",尾数运算结果调整为 1.11100110011001100110100 1.11100110011001100110100 1.11100110011001100110100

第五步:溢出判断

没有溢出,阶码不调整,所以最后的结果为

a + b = ( 0 01111111 11100110011001100110100 ) 2 = ( 0011 1111 1111 0011 0011 0011 0011 0100 ) 2 = ( 3 F F 33334 ) 16 a+b=(0\ \ 01111111\ \ 11100110011001100110100)_2=(0011\ 1111\ 1111\ 0011\ 0011\ 0011\ 0011\ 0100)_2=(3FF33334)_{16} a+b=(0  01111111  11100110011001100110100)2​=(0011 1111 1111 0011 0011 0011 0011 0100)2​=(3FF33334)16​

转为10进制

a + b = 1.90000010 a+b=1.90000010 a+b=1.90000010

二进制浮点数减法

b − a = ? b-a=? b−a=?
第一步:对阶

跟上面加法一样

第二步:尾数运算

1.10011001100110011001101 \ \ \ \ 1.10011001100110011001101     1.10011001100110011001101

− 0.01001100110011001100110 -\ 0.01001100110011001100110 − 0.01001100110011001100110

= 1.01001100110011001100111 =1.01001100110011001100111 =1.01001100110011001100111

第三步:规格化

1.01001100110011001100111 1.01001100110011001100111 1.01001100110011001100111已经是个规格化数据了

第四步:舍入处理

由于在对阶时, M a M_a Ma​有右移,且第一次最高为1,第二次为0,所以按"0舍1入",尾数运算结果调整为 1.01001100110011001100110 1.01001100110011001100110 1.01001100110011001100110

第五步:溢出判断

没有溢出,阶码不调整,所以最后的结果为

a − b = ( 0 01111111 01001100110011001100110 ) 2 = ( 0011 1111 1010 0110 0110 0110 0110 0110 ) 2 = ( 3 F A 66666 ) 16 a-b=(0\ \ 01111111\ \ 01001100110011001100110)2=(0011\ \ 1111\ \ 1010\ \ 0110\ \ 0110\ \ 0110\ \ 0110\ \ 0110)_2=(3FA66666)_{16} a−b=(0  01111111  01001100110011001100110)2=(0011  1111  1010  0110  0110  0110  0110  0110)2​=(3FA66666)16​

转为10进制

a − b = 1.29999995 a-b=1.29999995 a−b=1.29999995

二进制浮点数乘法

浮点数的乘法分为以下几个步骤:

计算符号位:通过异或操作计算符号位,若两个操作数符号位相同,则结果符号位为0,否则结果符号为1
计算原始尾数:两个操作数的尾数相乘(注意,这里是1.M * 1.M),得到原始尾数
计算原始指数:将两个操作数的指数(这里指的是指数幂次方,也就是阶码-移码后得到的数)相加,得到原始指数
规格化与舍入:对原始尾数和原始指数进行规格化,获得结果的指数,再对尾数进行舍入,获得结果的尾数

f l o a t X = − 0.3 ; Y = 500.25 float \ \ \ \ X=-0.3;Y=500.25 float    X=−0.3;Y=500.25;

X = ( − 0.3 ) 10 = ( 0.010011001100110011... 循 环 ) 2 = ( 1.00110011... 循 环 ) 2 ∗ 2 − 2 = ( 1 01111101 00110011001100110011010 ) 2 ( 这 里 对 无 限 循 环 小 数 有 舍 入 处 理 ) X=(-0.3)_{10}=(0.010011001100110011...循环)_{2}=(1.00110011...循环)_2 * 2^{-2}=(1\ \ 01111101\ \ 00110011001100110011010)_2(这里对无限循环小数有舍入处理) X=(−0.3)10​=(0.010011001100110011...循环)2​=(1.00110011...循环)2​∗2−2=(1  01111101  00110011001100110011010)2​(这里对无限循环小数有舍入处理)
Y = ( 500.25 ) 10 = ( 111110100.01 ) 2 = ( 1.1111010001 ) 2 ∗ 2 8 = ( 0 10000111 11110100010000000000000 ) 2 Y=(500.25)_{10}=(111110100.01)_2=(1.1111010001)_2*2^{8}=(0\ \ 10000111\ \ 11110100010000000000000)_2 Y=(500.25)10​=(111110100.01)2​=(1.1111010001)2​∗28=(0  10000111  11110100010000000000000)2​

X ∗ Y = ( X s ∗ Y s ) ∗ 2 X E + Y E X*Y=(X_s*Y_s)*2^{X_E+Y_E} X∗Y=(Xs​∗Ys​)∗2XE​+YE​
X E = − 2 X s = 1.00110011001100110011010 X_E=-2\ \ \ \ \ \ \ \ \ \ \ X_s=1.00110011001100110011010 XE​=−2           Xs​=1.00110011001100110011010
Y E = 8 Y s = 1.1111010001 Y_E=8\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Y_s=1.1111010001 YE​=8                Ys​=1.1111010001
X s 1.0011001100110011001101 \ \ X_s\ \ \ \ \ \ \ \ 1.0011001100110011001101   Xs​        1.0011001100110011001101
∗ Y s ∗ 1.1111010001 *\ Y_s\ \ \ \ *\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 1.1111010001 ∗ Ys​    ∗                        1.1111010001
= 10.01011000010011001100111001011101 =10.01011000010011001100111001011101 =10.01011000010011001100111001011101

X ∗ Y = 10.01011000010011001100111001011101 ∗ 2 6 X*Y=10.01011000010011001100111001011101*2^6 X∗Y=10.01011000010011001100111001011101∗26
= 1.001011000010011001100111001011101 ∗ 2 7 ( 右 规 操 作 ) \ \ \ \ \ \ \ \ \ \ \ \ =1.001011000010011001100111001011101*2^7(右规操作)             =1.001011000010011001100111001011101∗27(右规操作)

结果二进制就为(注意,上面的指数7要加上移码才是存在指数位中的阶码,即7+127=134)
( 1 10000110 00101100001001100110100 ) 2 (1\ \ 10000110\ \ 00101100001001100110100)_2 (1  10000110  00101100001001100110100)2​
至于最后的尾数是怎么得到,是由原始尾数(X和Y的尾数相乘后得到)经过舍入得到

二进制浮点数除法

除法与乘法相差不大,变更为指数相减,尾数相除。

f l o a t X = 91.34375 ; Y = 0.14453125 float \ \ \ \ X=91.34375;Y=0.14453125 float    X=91.34375;Y=0.14453125;

X = ( 91.34375 ) 10 = ( 1011011.01011 ) 2 = ( 1.01101101011 ) 2 ∗ 2 6 = ( 0 10000101 01101101011000000000000 ) 2 X=(91.34375)_{10}=(1011011.01011)_{2}=(1.01101101011)_2 * 2^{6}=(0\ \ 10000101\ \ 01101101011000000000000)_2 X=(91.34375)10​=(1011011.01011)2​=(1.01101101011)2​∗26=(0  10000101  01101101011000000000000)2​
Y = ( 0.14453125 ) 10 = ( 0.00100101 ) 2 = ( 1.00101 ) 2 ∗ 2 8 = ( 0 01111100 00101000000000000000000 ) 2 Y=(0.14453125)_{10}=(0.00100101)_2=(1.00101)_2*2^{8}=(0\ \ 01111100\ \ 00101000000000000000000)_2 Y=(0.14453125)10​=(0.00100101)2​=(1.00101)2​∗28=(0  01111100  00101000000000000000000)2​

X / Y = ( X s / Y s ) ∗ 2 X E − Y E = ( X s / Y s ) ∗ 2 6 − ( − 3 ) X/Y=(X_s/Y_s)*2^{X_E-Y_E}=(X_s/Y_s)*2^{6-(-3)} X/Y=(Xs​/Ys​)∗2XE​−YE​=(Xs​/Ys​)∗26−(−3)
X E = 6 X s = 1.01101101011 X_E=6\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ X_s=1.01101101011 XE​=6                 Xs​=1.01101101011
Y E = − 3 Y s = 1.00101 Y_E=-3\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Y_s=1.00101 YE​=−3                Ys​=1.00101
X s 1.01101101011 \ \ X_s\ \ \ \ \ \ \ \ 1.01101101011   Xs​        1.01101101011
/ Y s / 1.00101 /\ Y_s\ \ \ \ /\ \ 1.00101 / Ys​    /  1.00101
= 1.001111 =1.001111 =1.001111

9 + 127 = 136 9+127 = 136 9+127=136

( 0 10001000 00111100000000000000000 ) 2 (0\ \ 10001000\ \ 00111100000000000000000)_2 (0  10001000  00111100000000000000000)2​

浮点运算逻辑电路

Reference

https://zhuanlan.zhihu.com/p/58731780
https://www.yuejianzun.xyz/2019/05/28/%E6%B5%AE%E7%82%B9%E6%95%B0%E5%A4%84%E7%90%86/
https://www.cnblogs.com/yilang/
https://www.youtube.com/watch?v=MiOtePebraQ
https://www.youtube.com/watch?v=27JjUa-eu_E&t=11s
https://www.youtube.com/watch?v=fi8A4zz1d-s

二进制浮点数以及二进制浮点数算术运算相关推荐

  1. python十进制小数转二进制_python十进制和二进制的转换方法(含浮点数)

    本文介绍了python十进制和二进制的转换方法(含浮点数),分享给大家,也给自己留个笔记,具体如下: 我终于写完了 , 十进制转二进制的小数部分卡了我将近一个小时 上代码 #-*- coding: u ...

  2. 浮点数的二进制表示学习笔记

    基础知识: 十进制转十六进制: 十六进制转二进制: IEEE制定的浮点数表示规则: 了解: 目前C/C++编译器标准都遵照IEEE制定的浮点数表示法来进行float,double运算.这种结构是一种科 ...

  3. C语言存储为2进制,浮点数的二进制存储形式及c语言验证

    我们经常听说浮点数,其实浮点数是和定点数对应的.定点数就是小数点固定的数,而且他的小数点在最右边,所以定点数用来表示整数. 浮点数表示方法允许小数点的浮动,一个浮点数分为三个部分:第一部分是符号,可以 ...

  4. [转载] python怎么将十进制转换为二进制_python十进制和二进制的转换方法(含浮点数)

    参考链接: Python中的十进制函数 1 本文介绍了python十进制和二进制的转换方法(含浮点数),分享给大家,也给自己留个笔记,具体如下: 我终于写完了 , 十进制转二进制的小数部分卡了我将近一 ...

  5. 负整数及浮点数的二进制表示

    文章目录 前言 一.负整数的二进制表示 1.原码 2.反码 3.补码 二.浮点数的二进制表示 1.公式: 2.浮点数的分类(根据阶码分类) 1:规格化的值 2:非规格化的值 3:特殊值 3.浮点数的舍 ...

  6. 浮点数的二进制表示方法

    浮点数的二进制表示 Double型,64位 例一: 已知:double类型38414.4,求:其对应的二进制表示. 分析:double类型共计64位,折合8字节. 由最高到最低位分别是第63.62.6 ...

  7. 浮点数的二进制表示(IEEE 754标准)

    浮点数是我们在程序里常用的数据类型,它在内存中到底是怎么样的形式存在,是我了解之前是觉得好神奇,以此记录,作为学习笔记.现代计算机中,一般都以IEEE 754标准存储浮点数,这个标准的在内存中存储的形 ...

  8. JavaScript 浮点数与二进制之间的转换

    目录 二进制转浮点数 浮点数转二进制 二进制转浮点数 单精度 binary_to_float(data){let buf = new Uint8Array(data);buf.reverse();le ...

  9. java浮点数误差_浮点数运算的误差

    浮点数运算的误差 在 JavaScript 中整数和浮点数都属于number 数据类型,所有数字都是使用64位浮点数形式储存,遵循IEEE-754双精度标准存储,即便整数也是如此. 所以我们在打印 1 ...

最新文章

  1. Android ListView (多个adapter 说明)
  2. [Android Pro] InputStream.skip方法的思考
  3. golang 程序部署及Supervisord deamon 运行
  4. Linux id指令
  5. String,char,数组,列表 相互转化 (更新中)
  6. FileSystemObject (FSO)对象方法总结及应用
  7. 一步步手动实现热修复(二)-类的加载机制简要介绍
  8. ideal2018提示内存不足_基于IDEA2018卡死不动的解决方式(好用)
  9. frontend-maven-plugin插件问题解决
  10. 用Golang写一个搜索引擎(0x03)
  11. ajax中设置请求头和自定义请求头
  12. apple 个人或公司账号(99$)升级企业账号(299$)
  13. Windows 中剪贴板的操作
  14. 【细胞分割】基于形态学算法实现红细胞计数matlab源码含 GUI
  15. 集合和数组区别_了解您的编码基础:集合和数组之间的主要区别
  16. 小度wifi linux ap,小度WiFi的频率范围是多少
  17. package.json scripts 脚本使用指南
  18. 望一望漫天星光(随笔)
  19. 张云雷的《探清水河》登上央视,为什么蔡国庆可以随心所欲地唱
  20. 创建一个Customer类,类中的属性有姓名(name)、年龄(age)、性别(gender),每一个属性分别有get/set方法。然后创建两个customer对象:张立、18、女和王猛、22、男。把

热门文章

  1. 格式化输出的三种格式
  2. 【最全整理】37 个 Python Web 开发框架总结
  3. vm中虚拟机ubuntu窗口太小,自动缩放比例不正常
  4. Dhcp+acs认证
  5. 经典的60句话[转贴]
  6. js slice()方法
  7. centos7 php 安装mysql_Centos7 安装mysql
  8. mysql 设置mvcc_mysql的MVCC机制
  9. 十年,英方软件的变与不变
  10. html5 打开word文档,打开文件的方式 打开Word文档的方法有几种?