2.1数值与编码
2.1.1 进位计数制及其互相转换
[注意!!] 2018考察
二进制编码的原因:
-
计算机只有两种状态,0和1可以被稳定并简单的表达。成本低
-
1和0正好对应逻辑上的真和假,为逻辑判断提供便利条件
-
二进制的编码和运算规则简单,可以利用逻辑门电路方便实现
-
[总结] 利用二进制简单方便并且成本低
进位计数法以及各进制数之间的转换
[注意!] 其实我们没有必要强迫自己去记忆书中的进制表示公式,而是只需要明白一些简单的规律即可
基数:二进制,八进制,十进制,16进制中的2,8,10,16就是基数
二进制只有0,1
八进制只有0,1,2,3,4,5,6,7
十六进制只有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 后边英文字母分别表示10,11,12,13,14,15
十进制转各进制
个人认为由十进制数转换为各进制数是最简单的,方法如下:
首先是整数部分,我们只需要用整数部分去除以要转换成的进制数的基数,直到最后的商为0,将每一步得到的商逆序排序即可。
将十进制整数123转为2进制,8进制,16进制
123/2=61 ...... 1 123/8=15 ...... 3 123/16=7 ...... 11 61/2=30 ...... 1 15/8=1 ...... 7 7/16=0......7 30/2=15 ...... 0 1/8=0 ...... 1 故十六进制数就是7B 15/2=7 ...... 1 故八进制数就是173 7/2=3 ...... 1 3/2=1 ...... 1 1/2=0 ...... 1 故二进制数就是1111011 我们需要了解的是,十进制数转二进制数是最常用的,因为八进制和十六进制可以用二进制数很方便地表达出来,所以小数部分就不做详细解释。
之后是小数部分,相对于整数部分的直接除,小数部分采用乘的方式,取整数部分为排序,小数部分继续乘他的基数。并且也不需要逆序排序。
将十进制数0.6875转为2进制
0.6875×2=1.375 ——1
0.375×2=0.75 ——0
0.75×2=1.5 ——1
0.5×2=1 ——1
故变为的二进制数就是0.1011 ,八进制和十六进制同理。
[注意] 这一部分的知识点将在之后的IEEE754和浮点数的运算中不断用到,所以要熟练应用
任意进制转十进制
各位数码按权值相乘相加即可,二进制转十进制是从右到左用二进制的每个数去乘以2的相应次方(次方从0开始)。其余进制只需要将基数改变,建议大家可以直接将其首先变为二进制再进行计算。举例讲解:
将二进制数1101转为十进制
二进制转八进制和十六进制
二进制转八进制和十六进制时只需要从小数点为边界,整数部分向左数,小数部分向右数。八进制是2的3次方,故3个为一组,同理十六进制就是4个为一组。每组对应乘2的N次方,也就是将每一组都当成一个独立的二进制数,将其用转十进制的方法转变。对于位数不够的情况分别在最左边和最右边补0即可。语言表达不够明确,我们举例讲解:
将二进制数1111000010.01101分别变为八进制和十六进制
001 111 000 010 . 011 01
第一组就是0×2的2次方+0×2的1次方+1×2的0次方,也就是1.所以就变成了(1712.32)O
0011 1100 0010 . 0110 1000
第一组就是0×2的3次方+0×2的2次方+1×2的1次方+1×2的0次方,也就是3.所以就变成了(3C2.68)H
2.1.2定点数的编码表示
真值和机器数
众所周知,我们日常生活中的数字包含正数和负数之分,计算机也是如此。他将数字分为有符号数和无符号数两种计算机中的有符号数通常将最高位当作符号位,1代表复数,0代表正数。将符号数字化的数字称为机器数,将用+,-来代表政府的数字称为真值。
原码,补码,反码,移码⭐⭐⭐⭐⭐⭐
[注意!!] 极其极其极其重要的章节,这里我们默认字长都为8位
原码
用机器数的最高位表示数的符号,其他各位表示数的绝对值.
标签:表示,运算,符号,二进制,补码,1111,移码,次方,数据 From: https://blog.csdn.net/yingxuya5/article/details/137449951+1110 为00001110
-1110为10001110
我们可以看到在n+1位原码只有n为可以表示数值,所以他的表示范围就是-(2的n次方 -1)<=x<=2的n次方 -1