进制与数据宽度

进制的本质是什么:

由N个符号组成,逢N进1,(符号可以任意定义,可能会对解密者造成很大困扰!)

记住二进制与十六进制的映射
0000(0)
0001(1)
0010(2)
0011(3)
0100(4)
0101(5)
0110(6)
0111(7)
1000(8)
1001(9)

1010(A)
1011(B)

1100(C)
1101(D)
1110(E)
1111(F)

要学会查表:


image.png

可以很方便的进行加减乘除!


image.png

0-100个二进制数:
0,1,10,11,100,101,110,111,1000,1001
10011,1100,1101,1110,1111,......

其实书写二进制数的一个规律是这样的:遇到“满”是1,就不停的重复前面的"数",再加1

比如上面的这个例子:
0,1(现在位数全是1了,下面再加一个1,重复前面的数,即下面是10,11),
10,11(现在位数全是1了,下面再加一个1,重复前面的数,即下面是10,11)

数据宽度

数学上的数字,是没有大小限制的,可以无限大.但是在计算机中,由于受硬件的制约,数据都是有长度限制的(我们称之超过最多宽度的数据会被丢弃!)
image.png

在上面这幅图中

(小一点的"容器"):
  • 如果是有符号的话,以中间垂直这条线为界限,这条线的右边是正数,左边是负数;-1对应F(圆形里面的F);-2对应E(圆形里面的E);...-8对应8(圆形里面的8);F对应最大的负数:即-1;8对应最小的负数:-8
  • 如果是无符号的话,从0开始,到F,按照逆时针方向旋转,0~F
大一点的"容器"
image.png

逻辑与上面类似;

再大一点的"容器"
image.png

逻辑与上面类似;

再再大一点的"容器"
image.png

逻辑与上面类似;
无符号数:00000000-FFFFFFFF(32位)

常用的"容器"(其实是没有4位的,4位是2^4=16个数,对应第一个"圆")
BYTE 字节 8bit(2^8=256,对应第二个"圆")
WORD 双字节 16位
DWORD 四字节 32位

2个本质问题:
  • 计算机什么也不认识,只存0和1
  • 如果你存的数超过了它的界限,则毫不犹豫地扔掉
    关于有符号与无符号,是使用的时候定义的,计算机表示很无辜;

逻辑运算

逻辑运算可以算是CPU运算的本质
CPU是如何计算2+3=?
image.png
想要获取某个值的第N位值是多少

比如:想要知道8F的第四位

                 1000FFFF
   and           00001000
------------------------------------
                 00001000

运算完了之后看这位是什么原来的位就是什么!
最简单的加密算法:


image.png
image.png

如果将数放在CPU里面,运算速度是最快的,放在内存里面,存取速度相对慢一点.


image.png

上图中编号需要记忆好!
寄存器理解为"容器"!
操作码:"我要干什么"
操作数(源操作数,目标操作数):操作的对象

image.png

将高位省略了!

你可能感兴趣的:(进制与数据宽度)