1.进位计数制

二进制部署redis数据库_c语言

 用二进制数表示小数:

二进制部署redis数据库_二进制部署redis数据库_02

二进制部署redis数据库_二进制部署redis数据库_03

十进制数转r进制数:

除以r,不断取余数。转八进制(十六进制)可以先转为二进制,三位(四位)一合并。

如果是小数部分,需要将小数部分不断乘以r,取整数部分。

例:0.3

0.3*2   0.6  0

0.6*2  1.2   1

0.2*2   0.4   0

0.4*2   0.8   0

0.8*2   1.6   1

发现1001不断循环,表明有些小数无法用进制数精确表达。

2.BCD码

BCD码:用四位二进制表示一位十进制

8421码进行加法运算时,1010-1111不在合法范围内,运算结果如果超出10,就需要加6来进行修正

二进制部署redis数据库_二进制部署redis数据库_04

3.字符与字符串

二进制部署redis数据库_c语言_05

4.校验码

二进制部署redis数据库_补码_06

二进制部署redis数据库_补码_07

1.确定多少位校验位

二进制部署redis数据库_反码_08

2.确定校验位的位置

二进制部署redis数据库_补码_09

3.求校验码的值

将信息位的位置按二进制表示,二进制最后一位为1的信息位归为检验位P1组;二进制倒数第二位为1的信息位归为校验位P2组,以此类推。

一个组内的信息位进行异或运算,求出来的值即为校验码

4.纠错

将一个组内的校验码与信息位进行偶校验,即求异或运算,偶校验结果为0即结果正确。

如果结果中有1出现,偶校验结果由低位到高位排列组成的二进制表示错误信息位的位置。

二进制部署redis数据库_c语言_10

5.定点数的表示 

原码:

二进制部署redis数据库_开发语言_11

二进制部署redis数据库_补码_12

补码:

二进制部署redis数据库_反码_13

负数原码转补码,先转为反码:符号位不变,尾数取反,再转补码:尾数加一;将负数补码变为原码,需要尾数取反加1;正数的话,原码就等于补码也等于反码。

移码:补码的基础上将符号位取反。注意:移码只能用于表示整数。移码便于硬件比较真值的大小

技巧:由[x]补快速求[-x]补的方法符号位、数值位全部取反,末位+1

6.移位运算

只有右移才需要区分逻辑还是算数,如果是左移两种模式都只需要在低位补0

逻辑右移和算数右移的区别:

如果二进制表示的是图形,右移时高位补0,称为逻辑右移

二进制部署redis数据库_补码_14

算数移位:如果二进制数表示的是带符号位的数值,移位后要在高位补充符号位代表的数值(1或0),则称为算数右移。高位补0,低位舍弃。若舍弃的位=0,则相当于÷2;若舍弃的位不为0,则会丢失精度

反码的算数移位――正数同原码。负数的反码数值位与原码相反,因此负数反码的移位运算规则如下,

右移:高位补1,低位舍弃。

左移:低位补1,高位舍弃。

补码的算数移位——正数同原码。负数的补码移位规则:右移(同反码):高位补1,低位舍弃。左移(同原码):低位补0,高位舍弃。

二进制部署redis数据库_二进制部署redis数据库_15

二进制部署redis数据库_c语言_16

二进制部署redis数据库_补码_17

7.加减运算和溢出判断

只有“正数+正数”才会上溢——正+正=负

只有“负数+负数”才会下溢——负+负=正

方法一:采用一位符号位

设A的符号为As,B的符号为B,运算结果的符号为Ss,则溢出逻辑表达式为

V=ARBSs + AsBsSs若V=0,表示无溢出;若V=1,表示有溢出。

二进制部署redis数据库_开发语言_18

二进制部署redis数据库_反码_19

双符号位存储时并不会多占内存,因为只会存储一位,再复制符号位,运算时两位符号位同时参与

8.乘法运算

原码乘法运算:

二进制部署redis数据库_补码_20

二进制部署redis数据库_二进制部署redis数据库_21

补码的乘法运算:

二进制部署redis数据库_开发语言_22

二进制部署redis数据库_开发语言_23

9.除法运算