数制和码制
概述
物理量的变化在时间或者数值上面是连续的,这一类物理量被称为模拟量,表示模拟量的信号称为模拟信号,工作在模拟信号下的电子电路成为模拟电路。目前利用数字信号代替模拟信号的例子很多。
常用的数制
十进制
我们常用的数值 1,2,3,4,5 … 10
二进制
计算机常用的进制1,0,这里冯2 ,进 1 例如 101100
八进制
每一位都是0-7,计数的奇数就是0-7,遇到8 就会进位
十六进制
0-9以及A,B,C,D,E,F(10-15)来表示十六进制 6E7F
进制转换
二-----十
二进制相关的位置上的数字×2的方数
这里引用相关大佬的图片
十 ----二
十进制除2取余,从上向下除。从下向上写
二 -----八
方法为:3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)这里三个数一组
八 ----二
方法为:八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
二 ----十六
方法为:与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。
十六 ---- 二
方法为:十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
其他进制之间转换
- 1.通过转化为二进制,然后再转换为响应的机制
- 2.将十进制的相关数据并且除以相关的数据并取余
二进制算术和运算
二进制的算数运算特点
加法 相近的数数字进行相加
减法 相应位置相减位置不够就向前借位
乘法 响应位置进行相乘的操作
除法 一直向右侧进行移位
反码,补码,以及补码的运算
- 原码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+1]原 = 0000 0001
[-1]原 = 1000 0001
第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]
即
[-127 , 127]
2. 反码
反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[+1] = [00000001]原 = [00000001]反
[-1] = [10000001]原 = [11111110]反
可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算.
3. 补码
补码的表示方法是:正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补
对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值.
为啥使用补码
1.使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。
2.使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].
溢出问题
[-128, 127]
0 = [0000 0000](补)
-128 = [1000 0000](补)
127 = [0111 1111](补)
当byte类型的变量超上限127时,如:
+128 = -(-128)= 127 + 1
= [1111 1111](补)+ [0000 0001](补)
= [1000 0000](补)
= -128
+129 = 127 + 2
= [1111 1111](补)+ [0000 0001](补)
= [1000 0001](补)
= [1111 1111](原)
= -127
一些其他的码
这里具有8421码,取余的码另外还有一些其他的码,这里不用掌握,当需要使用时候再使用。
看到这里的小伙伴,书上的题该做了呦