软考备考—计算机基础知识

1.数据表示

1.1进制转换

进制数码基数位权(k代表第几位)
十进制(D)0,1,2,3,4,5,6,7,8,910 10 k {10}^{k} 10k
二进制(B)0,12 2 k {2}^{k} 2k
十六进制(H)0~9,A,B,C,D,E,F16 16 k {16}^{k} 16k

1.2按权展开法

  • 要将R进制转换成十进制:先将R进制数的每一位数值用R的k次方来表示,k与该位和小数点之间的距离有关,在小数点左边,k是该位和小数点之间数码的个数;在小数点右边,k为负值,其绝对值为该位和小数点之间数码的个数加一。

  • 如:

    • 0.1:左边0的位权上的k是0,右边1的位权上的k是1
    • 二进制100.1 = 1×2的3次方 + 1×2的-1次方 = 十进制所表示的数8.5

1.3短除法

  • 将十进制转R进制的使用短除法(除基取余法)

  • 如:

    • 将94转换为十六进制,先用94除以16等于5,余14;再用5除以16等于0,余5

所得到的余数从后面往前记录,则为5EH(5是最后一个余数,E是第二个余数14,H表示这是个十六进制数)。

1.4二进制转八进制和十六进制

1、因为八进制的数码最大到7,用二进制表示为101,需要三位数,所以用二进制转八进制可以三位三位的看,三位数字相当于一个八进制数,最高位不够三位就补0;八进制转二进制就反过来。

如:二进制10001110——>拆分成010,001,110,每三位对应八进制数是2,1,6,所以对应的八进制数是216

八进制216,将每一位数字转为二进制,再拼起来就是对应的二进制数

2、因为十六进制的数码最大的数码是15,用二进制表示为8421,需要四位数,所以二进制转十六进制可以四位四位的看,最高位不够四位就补0;十六进制转二进制反过来即可。

如:二进制10001110——>拆分成1000,1110,每四位对应的十六进制数为8,E,所以对应的十六进制数为8E

1.5原/反/补/移码

数值1数值-11-1(将数值1和数值-1相加)
原码0000 00011000 00011000 0010
反码0000 00011111 11101111 1111
补码0000 00011111 11110000 0000
移码1000 00010111 11111000 0000
  • 原码:最高位为符号位,0是正数1是负数,其余低位表示数值的绝对值
  • 反码:正数的反码和原码相同,负数的反码是其绝对值的按位取反(符号位不变)
  • 补码:正数的补码与原码一样,负数的补码是其反码末位加一(符号位不变)
  • 移码:补码的符号位按位取反

eg:

-10的原码:1000 1010

-10的反码:1111 0101 (符号位不变)

-10的补码:1111 0110 (反码+1)

补码取反:0000 1001 (符号位一起取反)

码制定点整数定点小数数码个数
原码 [ − ( 2 n − 1 − 1 ), + ( 2 n − 1 − 1 ) ] [-( {2}^{n-1} -1) , +( {2}^{n-1} -1)] [2n11),+2n11] [ − ( 1 − 2 − ( n − 1 ) ), + ( 1 − 2 − ( n − 1 ) ) ] [-( 1- {2}^{-(n-1)} ) , +(1- {2}^{-(n-1)} )] [12(n1)),+(12(n1)] 2 n − 1 {2}^{n} -1 2n1
反码 [ − ( 2 n − 1 − 1 ), + ( 2 n − 1 − 1 ) ] [-( {2}^{n-1} -1) , +( {2}^{n-1} -1)] [2n11),+2n11] [ − ( 1 − 2 − ( n − 1 ) ), + ( 1 − 2 − ( n − 1 ) ) ] [-( 1- {2}^{-(n-1)} ) , +(1- {2}^{-(n-1)} )] [12(n1)),+(12(n1)] 2 n − 1 {2}^{n} -1 2n1
补码 [ − 2 n − 1 , + ( 2 n − 1 − 1 ) ] [- {2}^{n-1} , +( {2}^{n-1} -1)] [2n1+2n11] [ − 1 , + ( 1 − 2 − ( n − 1 ) ) ] [-1 , +(1- {2}^{-(n-1)} )] [1+(12(n1)] 2 n {2}^{n} 2n
移码 [ − 2 n − 1 , + ( 2 n − 1 − 1 ) ] [- {2}^{n-1} , +( {2}^{n-1} -1)] [2n1+2n11] [ − 1 , + ( 1 − 2 − ( n − 1 ) ) ] [-1 , +(1- {2}^{-(n-1)} )] [1+(12(n1)] 2 n {2}^{n} 2n

注意事项:

  • n表示的这个数有多少个数位,数位第一位置是符号位,其余的位置的数值位置,如n=3,则100则不是-0,而是为规定值 − 2 n − 1 -{2}^{n-1} 2n1,也就是-4,是人为定义的,其值相当于是将符号位也一起加进去运算算数值,100=-(2的2次方)=-4。

  • 如果是定点小数也得把第一个数位看作符号位,小数点后面的就看作次数为负数的位权,eg:0.01——> + ( 1 + 1 × 2 − 2 ) + (1+ 1× {2}^{-2}) +1+1×22

1.6浮点数运算

  • 浮点数表示:

N = 尾数 ∗ 基数 指数 N = 尾数*{基数}^{指数} N=尾数基数指数

其中指数也叫做阶码,决定尾数正负的是数符,决定阶码正负的是阶符

  • 运算过程:

对阶>尾数计算>结果格式化

1.对阶(阶码小的化成和大的阶码一样)

2.化完之后再用尾数进行相加

3.再把结果格式化

  • 特点:
    • 尾数一般用补码,阶码一般用移码
    • 阶码的位数决定数的表示范围,位数越多范围越大
    • 尾数的位数决定数的有效精度,位数越多精度越高
    • 对阶是通过较小的数的尾数右移实现的

1.7逻辑运算

逻辑变量之间的运算称为逻辑运算:
在这里插入图片描述

在这里插入图片描述

短路原则

在逻辑表达式的求解中,并不是所有逻辑运算符都要被执行,如a&&b,只有a是真才会去判断b的真假

2.校验码

2.1奇偶校验码

  • 码距:任何一种编码都由许多码字构成,任意两个码字之间最少变化的二进制位数 就称为数据校验码的码距(eg:在二位数集合{00,01,11}中最多有两位可以变化,最少有一位,所以码距为1)
  • 奇偶校验码的编码方法:由若干位有效信息位,再加上一个二进制位(校验码)组成校验码
  • 奇校验:整个校验码(有效信息位和校验位)中的“1”的个数为奇数
  • 偶校验:整个校验码(有效信息位和校验位)中的“1”的个数为偶数
  • 特点:可检查一位(奇数位)的错误,不可纠错

2.2CRC循环冗余校验码

  • 可检错,不可纠错
  • CRC编码方法:在k位信息码之后拼接r位校验码
  • 把接收到的CRC码用生成多项式G(X)去除(模二除法),如果正确,余数为0;如果某一位出错,余数不为0

2.3海明校验码

  • 可检错,也可纠错
  • 海明校验码的原理是:在有效信息位中加入几个校验位形成海明码,使码距比较均匀地拉大(不为1),并把海明码的每个二进制位分配到几个奇偶校验组中。当某一位出错后,就会引起有关的几个校验位的值发生变化,这不但可以发现错误,还能指出错误的位置,为自动纠错提供了依据

在这里插入图片描述

### 计算机硬件基础知识教程与点 #### 存储器简介 存储器是计算机系统的重要组成部分之一,用于保存数据和程序。按照存取速度的不同可以分为高速缓存(Cache)、主存储器(RAM)和辅助存储器(硬盘等)[^1]。 - **Cache**:位于CPU内部或靠近CPU的位置,容量较小但访问速度快。 - **RAM (Random Access Memory)**:易失性内存,在断电后会丢失其中的数据;工作频率较高,能够快速读写信息。 - **ROM (Read Only Memory)** 和其他类型的非易失性存储设备如闪存,则用来存放启动所需的固件代码和其他永久性的资料。 #### 指令系统概述 指令系统定义了一台特定型号计算机所能执行的所有命令集,即所谓的机器语言。它构成了件层面对底层物理资源请求的方式,并且影响着整个系统的架构设计和发展方向[^3]。 - 设计良好的指令集应该具备高效能、灵活性以及易于编程的特点。 - 这些特性通过合理规划每条指令的功能来达成——既虑到了直接支持常用任务的需求,又兼顾到简化编译过程的要求。 #### 计算机构成要素 除了上述提到的核心组件外,完整的计算平台还包括但不限于以下几个方面: - 输入/输出(I/O)接口负责连接外部世界并传递信号; - 控制单元协调各部件之间的协作关系; - 总线作为传输路径承载地址、控制和数据三种不同性质的信息流; - 中央处理器(CPU),也就是常说的微处理器,承担起运算核心的角色,其性能直接影响整机效率。 对于备考者而言,理解这些基本概念有助于构建全面的知识框架,从而更好地应对实际应用场景中的挑战[^4]。 ```python # Python 示例展示如何模拟简单的二进制加电路逻辑 def binary_adder(a, b): result = [] carry = 0 while a or b: sum_bit = (a % 2 + b % 2 + carry) % 2 carry = (a % 2 + b % 2 + carry) // 2 result.append(sum_bit) a //= 2 b //= 2 if carry != 0: result.append(carry) return list(reversed(result)) print(binary_adder(5, 7)) # 输出 [1, 1, 0, 0] ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值