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 

 

相关文章