数据宽度和逻辑运算
1.数据的宽度
计算机以二进制的形式保存数据;
在计算机中由于受到硬件的制约,所存的数据长度会有限制;
超过最大宽度的数据会被丢弃;
例如:4位宽度表示计算机最多只能存储4位二进制数;
计算机存储的相同的二进制数可以被根据需要当成有符号数和无符号数;
比如数据宽度为4时,可存储16个数;
如果把这些数当做无符号数,也就是不考虑负数,可保存0~F,当F+1时,由于宽度不够,被舍弃高位,所得的值为0;
如果当做有符号数,会将16个数分成两部分,一半存正数一半存负数,0~7用来表示正数,8~F用来表示负数;
0是最小的正数,F是最大的负数;因为F+1=0;
也就是说F表示-1,以此类推E=-2,D=-3,C=-4...
总之,计算机只保存特定的二进制数,而将这个数当做有符号或无符号数是使用该数据的人来决定的;
2.逻辑运算
计算机中有4中基本的逻辑运算:或、与、异或、非
例如:计算机实现2+3的原理
#计算机是如何计算2+3的
2+3=?
#计算机只认识二进制数,将两个数存入两个容器X,Y
2 ->0010;
3 ->0011;
X=0010
Y=0011
#先给X、Y两个数做异或运算,并将结果保存在一个容器R中
0010
xor 0011
----------------
0001
R=0001
#cpu判断是否算完;
#判断算完的标志是:让两个数X,Y先与运算,所得的结果左移一位;结果是0则R就是结果;
0010
and 0011
----------------
0010
0010<<1=0100
0100 !=0000所以结果不是R即0001
#如果没得到结果,把上次异或得到的值R赋值给X;把上次与的结果左移一位的值赋值给Y;
X=0001
Y=0100
#然后又开始给X和Y做异或运算了
0001
xor 0100
--------------
0101
R=0101
#给X、Y做与运算,和前面一样
0001
and 0100
---------------
0000
0000<<1 ==0
#因为两个数与运算的结果为0,因此cpu判断已经计算完成,而所得的结果即此时R的值
R=0101
#转成十进制
R=5
#也就是结果:2+3=5
1)使用逻辑运算获取数据的某一位
例如获取 1011的第2位:1011 & 0100
2)利用异或的简单加密
原理:一个数与特定的数两次异或会得到相同的值,可以将特定的数作为密钥来用异或加密;
例如:简单的加密