数据宽度与逻辑运算

数据宽度

在现实世界中纸张有不同的大小,我们能够写下去的数据也有大有小,在计算机中也是如此,计算机中所有底层数据都是以二进制存放的,而能存放多少的二进制数区分了不同的存储单位

四位
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,如何区分某块数据是正数还是负数需要程序规定这块数据是有符号数还是无符号数,有符号数才区分正负数,无符号数只有正数

image-20230413160308834

计算机会扔掉超出自己存储范围的数据

BIT 位 一位只能存储一个0或者1

BYTE 字节 8位

WORD 字 16为 2字节

DWORD 双字 32位 4字节

问题:IP地址采用点分二进制的方式表示,一共四块,每块一个字节,请问将二进制数转换为人类易读的点分十进制方式记录,每块最大数为多少

逻辑运算

通电为1,不通电为0

与运算(and &)

两个都为1就是1

1
2
3
4
11111111
01010101

01010101

image-20230413163916900

或运算(or |)

是要有一个为1就是1,如图,不管哪条线放下去电路就都通了

1
2
3
4
11111111
01010101

11111111

image-20230413163656198

异或运算(xor ^)

不一样的时候就是1

1
2
3
4
11111111
01010101

10101010

image-20230413164210624

非运算(not !)

0运算就是1,1运算就是0

1
2
3
11111111

00000000

电路运算

十进制计算2加3,将2和3分别存入一个空间,假设为X,Y

X,Y异或运算得出的数值为R

接下来判断运算是否结束,X,Y进行与操作,运算的结果左移一位,如果这时候结果为0,那么R就是最终的数据

如果不为0,将R的值给X,左移以后的值给Y,重复直到左移一位的值为0

image-20230413170458238

简单异或加密

假设密钥为11

对2023加密

原数据异或密钥形成加密报文,加密报文异或密钥还原为原数据

image-20230413172312486