滴水逆向--01-14 数据宽度_逻辑运算
数据宽度
看成一个圆,当分正负的时候就从中间劈开,左边负数,右边正数,对应平时所讲的正数第一位为 0、负数第一位为 1,且左边最下面为最大的负数




几个重要的计量单位:
BYTE 字节 8bit
WORD 字 16bit 2字节
DWORD 双字 32bit 4字节
逻辑运算
二进制的逻辑运算:
-
逻辑运算:或(or |)只要有一个为 1 就是 1

逻辑运算:与(and &)两个都是 1 才是 1

逻辑运算:异或(xor ^)不一样为 1

逻辑运算:非(not !)1 是 0,0 是 1

逻辑运算的具体应用:
-
CPU 是如何计算 2+3=?

-
如果想获取某个值的第 N 位的值是多少?

-
最简单的加密算法

课后作业:
-
八进制数 2-5 在计算器中的结果是:1777777777777777777775,为什么?
因为八进制是将 3 个二进制位合为 1 位,而计算机的字长(16/32/64位)通常是 2 的整数次幂,无法被 3 整除。当前计算机 64 位,64/3,商 21 余 1,最左边会剩余 1 位,也就是 1,如果计算机为 32 位,答案就会是 37777777775,16 位就会是 177775
-
使用异或对 87AD6 进行加密后再解密,加解密密钥:5
87AD6:1000 0111 1010 1101 0110
5:0101
1000 xor 0101 = 1101
0111 xor 0101 = 0010
1010 xor 0101 = 1111
1101 xor 0101 = 1000
0110 xor 0101 = 0011
加密过后:D2F83
1101 xor 0101 = 1000
0010 xor 0101 = 0111
1111 xor 0101 = 1010
1000 xor 0101 = 1101
0011 xor 0101 = 0110
解密过后:87AD6
-
只用逻辑运算计算 2-3=?(涉及内容:逻辑运算、移位、数据宽度)
2-3 等同于 2+(-3)
2: 0010 -3: 1101
Step1. 0010 xor 1101 = 1111
Step2. 0010 and 1101 = 0000
Step3. 0000 << 1 = 0000
左移结果为 0,说明计算结束,答案为 Step1 所的结果 1111
1111 = F,即 -1
-