标签:
一、进制的定义
由N个符号组成,满N则向上进位1.
二、常用的数据类型
1BYTE(字节)=8BIT(位)
1WORD(字)=2BYTE(字节)=16BIT(位)
1DWORD(双字)=2WORD(字)=4BYTE(字节)=32BIT(位)
三、二进制的逻辑运算符
A、逻辑运算符or(中文名:或运算 C对应符号:|)
定义:两个数只要有一个为1,结果就是1.
例子:
B、逻辑运算符and(中文名:与运算 c对应符号:&)
定义:两个数都是1,结果才是1
例子:
C、异或运算符xor(中文名:异或运算 c对应符号:^)
定义:两个数不相同,结果才是1
例子:
D、非运算符not(中文名:非运算 c对应符号:!)
定义:当被此运算符修饰时,每位取反
例子:
四、CPU如何计算2+3的结果?
1.第一步,先将十进制转二进制(2=0010,3=0011)
2.第二步,将上面两个二进制进行异或运算,并将计算结果存放到寄存器中。
3.第三步,计算机为了判断第二步是否已经计算完毕,他会将上面两个二进制数做与运算,也就是0010和0011,并将将计算结果左移一位,如果左移后结果每位都是0,证明计算完成。
4.第四步,由于刚才0100每位不全是0,证明计算并未完成。计算机继续拿第二步的结果和第三步的结果做异或运算,并把结果存放到寄存器中。
5.第五步,继续拿0001和0100做与运算。并将结果左移一位,如果左移后结果每位都是0,证明计算完成。
6.第六步,由于第五步的结果每位都是0,证明计算完毕。计算机就会将第四步的结果作为本次运算的最终结果,也就是0101=5,所以2+3=5
五、如果想获取某个值二进制中第N位是0还是1,该如何计算?
例子:求8F,第5位是0还是1
1.首先将8F转为二进制:10001111
2.创建一个和上面一样长度,全是0的二进制数据:00000000
3.因为求第5位,我们将上一步的第5位变成1:00001000
4.将第一步的二进制,第三步的二进制做与运算,取运算结果第五位,如果是1,证明8F第五位是1,如果是0,证明8F第五位是0
六、最简单的加密算法(原理就是利用xor指令,当对某个数用指定的密钥异或后,再将异或的结果与密钥做异或运算,最后的结果是其本身。就好比1+5=6,再用6-5,那么就能知道加密前的数是1)
要加密的数据:2015
密钥:54
因为密钥是两位数,我们就要把2015以两位为一组拆分来加密
1.第一步:首先求得2015前两位的二进制 20=00100000
2.第二步:54=01010100
3.第三步:将一、二步的值异或,结果为01110100=74
4.第四步:求得2015后两位的二进制 15=00010101
5.第五步:将第二、四步的值异或,结果为01000001=41
6.第六步:最后就是将7441发送给对方。对方接收到7441这串密文后,利用预先定义好的密钥54=01010100,分两位为一组,对7441进行异或解密
7.第七步:解密结果为00100000=20 00010101=15,所以明文数据为:2015
标签:
原文地址:http://www.cnblogs.com/fuhua/p/5883702.html