20135218姬梦馨——信息安全系统设计基础第三周学习总结

学习计时:共7小时

读书:2h

代码:0.5h

作业:2.5h

博客:2h

 


 

 

一、学习过程

 

(一)无符号

 

无符号(unsigned)编码基于传统的二进制表示法,表示 大于或者等于零的数字。

补码(two's-complement)编码是表示有符号整数的最常见的方式,有 符号整数就是可以为正或者为负的数字。

浮点数(floating-point)编码是表示实数的科学记数法 的以二为基数的版本。计算机用这些不同的表示方法实现算术运算,例如加法和乘法,类似于对 应的整数和实数运算。 当结果太大不能表示时会溢出,大量安全漏洞都是由于算数运算引发的.

 

二)进制转换

在二进制表示法中,它的值域是000000002 ~ 111111112 ;如果用十进制整数表示,它的值域就是010 ~ 25510。十六进制(简写为"hex")使用数字'0'~'9',以及字符'A'~'F'来表示16 个可能的值。在C 语言中,以0x 或0X 开头的数字常量被认为是十六进制的值。字符'A'~'F'既可以是大写,也可以是小写,甚至是大小写混合。

 

(三)

每台计算机都有一个字长(word size),指明整数和指针数据的标称大小(nominal size)。因为虚拟地址是以这样的一个字来编码的,所以字长决定的最重要的系统参数就是虚拟地址空间的最大大小。也就是说,对于一个字长为w 位的机器而言,虚拟地址的范围为0 ~ 2w-1,程序最多访问2w 个字节。

 

(四)小端法大端法

—最低有效字节在最前面的方式,称为小端法(little endian)。大多数Intel 兼容机都采用这种规则。

后一种规则—最高有效字节在最前面的方式,称为大端法(big endian)。大多数IBM 和Sun Microsystems 的机器都采用这种规则。注意我们说的是"大多数"。这些规则并没有严格按照企业界限来划分。

小端是"高对高、低对低",大端与之相反

 

(五)布尔代数

二进制值是计算机编码、存储、操作信息的核心(0、1)

逻辑运算——0或1
位运算————位向量

(六)整数表示

数据类型long long是在ISO C99中引入的。(编译:gcc -std=c99)。

64位机器用8个字节表示;32位机器用4个字节表示。
*负数的范围比整数的范围大1。

(七)补码

最常见的有符号数的计算机表示方式。

正数的补码=原码
负数的补码=原码各位取反再加1

最高有效位也叫符号位。

(八)无符号数与有符号数转换

强制类型转换的结果保持位值不变,改变解释这些位的方式。

处理同样字长的有、无符号数之间相互转换的规则:数值可能会变,但是位模式不变。(底层的位表示保持不变)

(九)扩展数字的位表示

零扩展:在开头添0。(将无符号数转换成更大的数据类型)

符号扩展:添加最高有效位的值的副本。(一个补码数字转换成更大的数据类型)

(十)截断数字

可能会改变数值——溢出的一种形式。

对于无符号数字x,截断到k位,相当于计算:x mod 2(k)。(k次幂)

 

(十一)IEEE浮点表示

符号:s决定这个数是负数(s = 1)还是正数(s = 0),而对于数值0的符号位解释作为特殊情况处理。

尾数:M是一个二进制小数,它的范围是1 ~ 2-ε,或者是0 ~ 1-ε。

阶码:E的作用是对浮点数据加权,这个权重是2的E次幂(可能是负数)。

 

向偶数舍入(默认)、向零舍入、向下舍入、向上舍入。

 

二、课程总结

这次学习了用各类方法来表示基本的数据类型,再操作这些数据。

关于位模式的问题,一开始不是很清楚,关于强制转换也不能完全理解。后来再对位模式有了彻底的了解之后,知道了数字串无论什么进制都可以看做是进制的一种位模式,

 

posted @ 2015-10-06 23:48  偷影子的人  阅读(246)  评论(0编辑  收藏  举报