Oracle信的象征和拍卖

 1.1计算机中之存储单元

当操作系统虚拟内存技术之处理下,机器级程序用内存视为一个异常怪之字节数组,称为虚拟内存。

虚拟内存的最小寻址单元是字节(byte=8bit),每个字节都出于一个唯一的固定字长的数字标识称为地址。这些地址的会师称为**虚拟地址空间。**

1.1.1电脑的字长属性

列令计算机都发生一个字长属性,指明指针数据的标称大小。因为虚拟内存是由此字长编码表示地址的,所以字长决定的无比要紧之参数就是虚拟内存的无限特别寻址大小。32员机限制的虚拟内存空间也4GB,64位机限制的虚拟内存空间吗16EB。另一方面字长也决定总线数据传的定长大小

1.1.2寻址和字节顺序

对于超过多字节的次第对象,我们须树立两只规则:“这个目标的地址是啊,对象在多字节中的排列顺序”。

多字节对象还存储于连年的字节序列,对象的地点以字节中极度小之地址,存储方是没分别之,但是字节顺序是多方与小端的别。

假设变量x的色为int,位于地址0x100处在,在内存中占有四单字节,它的十六迈入制值为0x01234567。x的号表示为[01,23,45,67],其中‘01’就叫做高高的有效位,‘67’叫做倭有效位

Oracle 1

小端存储低有效字节放在小地址。

多方存储摩天有效字节放在小地址。

绝大多数Intel兼容机都不过所以小端模式,另一方面,IBM和Oracle
2010年收购Sun的多数机器是多方面模式。Android和iOS只能运行于小端模式。

Oracle 2

透过上图ubuntu对int
数据0x1234567的贮存看到,ubuntu的低有效位在多少地方。所依ubuntu系统运用的凡小端模式。

其间字应用了UTF-8的编码。(字符,字符集,字符编码——了解字符集及编码的别)

1.1.3布尔代数简介

第二迈入制值是计算机编码、存储和操作信息之着力,围绕在累值0和1底研究也演化了增长的数学体系。

1850年左右,乔治.布尔以逻辑值true和false编码成1和0,能够统筹成一种代数,用来研讨逻辑推导的原则。布尔代数就生出啦。

Oracle 3

1.1.4C语言上的位级运算

C语言的一个不行有因此的特性就是是支持以号展开布尔运算

Oracle 4

C语言中之移动运算

Oracle 5

左移:x向左移动k位,丢掉最高的k位,并当右端补k个七零八落。

逻辑右移:在左端补k个七零八落。

算右变:在左端补k个高位。

C语言并没明确规定对发生记号数下那种类型的右移。但是编译器默认对发出标志数下算数右变,对任标志数以逻辑右移。

1.2平头的表示

1.2.1C语言中的整数数据类型

C语言支持多平头品类——表示有限范围的整数

Oracle 6

Oracle 7

 

1.2.2不管标志数之编码

Oracle 8

Oracle 9

极充分的无符号数B2U4([1111]),最小之无符号数B2U4([0000])

1.2.3补码编码

Oracle 10

Oracle 11

补码最高位是符号位,权重为-2w-1,最高位为1时表示负数,为0时代表自然数。

TMin4 = B2U4([1000]) =
-8,TMax4 = B2U4([0111]) =
7,为零底有,补码的顶充分价值与顶小值是无对称的。 

|TMin| = TMax+1,UMax(无符号最可怜价值) =
2*TMax+1

原码、反码、补码

0和正整数之原码、反码、补码都同。[+1]
= [00000001] = [00000001] =
[00000001]

负数:原码(符号位也1),反码(原码除符号位取反)、补码(反码+1)[-1]
= [10000001] = [11111110] =
[11111111]

1.2.4起号子数及无符号数的倒车,位的扩展和截断

Oracle 12

产生记号和无符号转化:

  1.   内存中每一个字节的值未会见变动,改变之凡计算机解释时值得方式。
  2.   如果一个表达式既包含有号数也包含无符号数,有记号数会吃隐式转化成无符号数。

色扩展(保持原来数据的大大小小,扩充数据的位数)

  1. 无符号数:加零
  2. 有号子数:加符号位

路截取(保持内存中的配节值不转移)

  1. 无符号与生号子数:mod操作(有号子数注意符号位的变型,可能会见油然而生溢起)。

1.2.5整数运算

Oracle 13

Oracle 14

Oracle 15

Oracle 16

Oracle 17

Oracle 18

由此者这几只函数我们见到了C语言是怎处理溢起之。

Oracle 19

char的限量也[-128~127],b应该当128,但是超过了char的范围。所以补码的非处理溢出会按照公式执行。

1.3浮点数表示

浮点数表示对形如V =
x*2y的来理数进行的编码。(0<<|V|<<1)。1976年于Intel的帮扶下,在Kahan(加州大学的一样号教授)作为顾问的扶助下,IEEE委员会终于给1985年就了IEEE标准,并叫所有的计算机支持。

1.3.1清楚二进制小数

解浮点数的首先步理解含有小数值的二进制数字,小数号之权重。

Oracle 20

实际的浮点数的象征

Oracle 21

浮点数转化为第二前进制数小数点前后也用了不同的道,小数触及前除以2,小数点后随着以第二,例如:4.75
= [100.11]

 1.3.2IEEE浮点表示

IEEE浮点标准用V =
(-1)s*M*2E
来表示一个反复。

s=>符号位(sign),正数(s=0),负数(s=1)

M=>尾数(signficand),表示一个二进制小数,范围是1~2-€,或者是0~1-€

E=>阶数(exponent),作用对浮点数进行加权,这个权重是2之E次幂。

Oracle 22

IEEE的浮点数表示分为三种植情形(规格化数、非规格化数、特殊值)

规格化的价(当exp的二进制不统否零星乎无备呢一时,按这种状态表示)

  1. 阶码的价值:E = e-Bias,e
    =无符号数之款式解析exp存储的次进制序列,Bias(固定值) =
    2阶数-1-1,可以当是Tmax。当e存储的行列较小时,E可能会见获取负值。
  2. 奇的价值:M =
    1+frac,规格化的累惨遭规定尾数要为1开始,可能通过调整阶码使尾数固定为1开头,这样即使不用显示的意味开始的1,可以节约一个各类之贮存并且增长浮点数精度。

非规格化的价值(当exp的第二进制全为零星,具有两只用途)

  1. 阶码值:E = 1-Bias, 尾数值:M =
    frac
  2. 当frac全呢0时,得到的值表示0,当s=0时凡+0,当s=-1时代表-0。
  3. 当frac为未零时,E =
    -126(单精度)或者-1022(双精度),所以非规格化数一般代表无异栽死相近被零的一再。

特殊值(当exp的次迈入制全为同一,具有两独用途)

  1. 当frac全呢0时,得到的值表示无论是根本,当s=0时凡是+∞,当s=-1时表示-∞。
  2. 当frac为免零时,结果值为称作“NAN”,表示“不是一个累”。

Oracle 23

 1.3.3浮点数舍入

IEEE浮点格式定义了季种植不同的舍入方式,默认的主意是找到通往偶数舍入(最相仿的相当)。

向阳偶数舍入:试图找到一个不过相近的配合模式(14.舍入为1,1.6放弃入乎2)。唯一的规划决策(不存不过接近的舍入时,采取往偶数舍入)将数字向上或向下舍入,使得结果的最低有效数字也偶数,例如1.5和2.5点滴个中等数都舍入为2。

朝零舍入:正数向下舍入,负数向上舍入。

Oracle 24 

 

相关文章