zoukankan      html  css  js  c++  java
  • 20135316王剑桥 linux第三周课实验笔记

    通过使用标准的字符码能够对文档中的字母和符号进行编码。

    三种重要的数字表现形式:

    1、 无符号数:编码基于传统的二进制表示法表示大于或等于零的数字。

    2、 补码:编码是表示有符号整数的最常见方法,可以是正或者是负的数字。

    3、 浮点数:编码是表示实数的科学计数法的以二位基数的版本

    溢出:计算机的表示法是用有限数量的位来为一个数字编码,因此当结果太大就会导致某些运算溢出。

    整数和浮点数会有不同的数学属性是因为:处理数字表示有限性的方法不同:

     整数:编码相对较小的数值范围,但精确度高 浮点数:编码较大范围的数,但这种表示是近似的

    信息的表示和处理

    一、信息存储

      ① 3种数字的表示:无符号编码、补码编码、浮点数编码。

      ② 二进制、八进制、十六进制转化

      ③ 字:字长为w位,虚拟地址范围为0~2^w-1,程序最多访问2^w个字节。

        数据大小:(shortlongintcharlong longfloatdouble

      ④ 寻址和字节顺序:  

        小端法:最低有效字节在最前面的方式(大多数Intel兼容机)

        大端法:最高有效字节在最前面的方式(大多数IBMSun Microsystems

        双端法:可以设置其中一种。

      ⑤ 字符串(ASCII码)

      ⑥ 布尔代数:与 &、或 |、非 ~、异或 ^

         位级运算

      ⑦ 逻辑运算:&&||(非零为TRUE,0FALSE

      ⑧ 移位运算:<<>>

        java<<>><<<>>>

    二、整数表示

    最高位有效位也称符号位,权重为-2^w-1。符号位为1是负为0是正。

    C语言中的有符号数和无符号数:默认有符号,若想创建无符号常量必须加后缀U/u

      ① charshortintlong

        取值范围:

         典型取值范围中,取值范围不对称——负数的范围比整数的范围大1

         c语言标准定义的每种数据类型必须能够表示的最小的取值范围中,正数和负数的取值范围是对称的。

      ② 无符号数、有符号数的补码编码

      ③ 截断数字:对于无符号数来说,就相当于 mod 2k次幂,而对于有符号数来说,先按照无符号数截断,然后再转化为有符号数。

    三、整数运算

    整数运算较为精确,但进行有符号数运算时容易溢出,导致计算值出现错误。

    整数加法: 形成交换群(阿贝尔群…)、模运算

          容易溢出,但满足结合律、交换律、分配律,可以进行优化计算

    1.无符号加法:可以被视为模运算形式,等价于计算和模2^w。运算的溢出是指完整的整数结果不能存放到数据类型的字长限制中。

    2.补码加法:负溢出得到的结果比整数和大16,正溢出得到的结果比整数小16.

    3.补码乘法:给定长度的两个为位向量,无符号乘积的位级与补码乘积的位级表示是相同的,表明及其可以用一种乘法指令来进行有符号数和无符号数的乘法。无符号和补码乘积的低位是相同的

    4.乘以常数:为了缩短计算时间,试着用移位和加法运算的组合来代替乘以常数的乘法。

    5.除以2的幂:除法比乘法的计算时间更长。除以的幂用右移而不是左移。

    6.关于整数运算:整数运算实际是一种模运算。表示数字的有限字长限制了可能的取值范围,结果可能溢出。补码提供了技能表示正数也能表示负数的灵活方法,同时使用了与执行无符号算数相同的位级实现。

    四、浮点数

    浮点数运算不会溢出,但是计算的结果是一个大致的范围,并不十分精确,不同的计算过程会有不同的计算值。

    ① 二进制小数:权值2^(-w)(w为小数点右边第几位)

        与十进制小数类似。二进制小数点向左移动一位相当于这个小数被2除,向右移动一位相当于该数乘以2

      ② IEEE浮点表示:符号、尾数、阶码

        规格化的值、非规格化的值、特殊值

           IEEE浮点表示:标准 V=(-1)^sM2^E

    其中:

        符号:s  决定这个数是正数还是负数。    尾数:二进制小数。    阶码:E  对浮点数加权,权重是E次幂。

    将浮点数的位划分成三段分别进行编码:

        一个单独的符号位直接编码符号。    K位的阶码字段exp=ek-1……e1e0编码阶段    N位小数字段

      ③ 浮点运算:加法:不具有结合律,满足单调性

    ④ c语言的浮点数:floatdouble

    数字示例:k位阶码和n位小数的浮点表示的一般属性:

    +0.0总有一个全为0的位表示。最小的正非规格化值的位表示,是由最低位为1而其他位为0构成的最大的非规格化值的位表示,是由全为0的阶段字码和全为1的小数字段组成最小的正规格化值的位表示,是由最低位为1而其他位为0构成的。1.0的位表示的阶码字段除了最高有效位等于0以外其他位为1.最大的规格化值的位表示,符号位为0阶码的最低有效位为0,其他位为1.

    遇到的问题:

    计算时对运算公式的不熟悉,日后要多多练习增加熟练程度。

    对阿贝尔群的概念初次接触还不是很了解,要和之前的交换群加以相互理解概念以及性质。

    运算时的溢出情况理解的相对还不是很透彻。

  • 相关阅读:
    2019-8-31-C#-性能分析-反射-VS-配置文件-VS-预编译
    2018-8-10-WPF-鼠标移动到列表上-显示列表图标
    C语言对齐、补齐
    main函数前后
    Ubuntu安装telnet
    Ubuntu安装rpm
    extern c 解释
    gcc和g++编译器
    原子操作
    linux内核信号量
  • 原文地址:https://www.cnblogs.com/20135316wjq/p/4862121.html
Copyright © 2011-2022 走看看