数据宽度与逻辑运算

数据宽度与逻辑运算
xiu数据宽度
在现实世界中纸张有不同的大小,我们能够写下去的数据也有大有小,在计算机中也是如此,计算机中所有底层数据都是以二进制存放的,而能存放多少的二进制数区分了不同的存储单位
四位 | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0000 | 0001 | 0010 | 0011 | 0100 | 0101 | 0110 | 0111 | 1000 | 1001 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
我们在学习的时候就知道有正数与负数的区别,但是在计算机的眼里只有0和1,如何区分某块数据是正数还是负数需要程序规定这块数据是有符号数还是无符号数,有符号数才区分正负数,无符号数只有正数
计算机会扔掉超出自己存储范围的数据
BIT 位 一位只能存储一个0或者1
BYTE 字节 8位
WORD 字 16为 2字节
DWORD 双字 32位 4字节
问题:IP地址采用点分二进制的方式表示,一共四块,每块一个字节,请问将二进制数转换为人类易读的点分十进制方式记录,每块最大数为多少
逻辑运算
通电为1,不通电为0
与运算(and &)
两个都为1就是1
1 | 11111111 |
或运算(or |)
是要有一个为1就是1,如图,不管哪条线放下去电路就都通了
1 | 11111111 |
异或运算(xor ^)
不一样的时候就是1
1 | 11111111 |
非运算(not !)
0运算就是1,1运算就是0
1 | 11111111 |
电路运算
十进制计算2加3,将2和3分别存入一个空间,假设为X,Y
X,Y异或运算得出的数值为R
接下来判断运算是否结束,X,Y进行与操作,运算的结果左移一位,如果这时候结果为0,那么R就是最终的数据
如果不为0,将R的值给X,左移以后的值给Y,重复直到左移一位的值为0
简单异或加密
假设密钥为11
对2023加密
原数据异或密钥形成加密报文,加密报文异或密钥还原为原数据