数据宽度

看成一个圆,当分正负的时候就从中间劈开,左边负数,右边正数,对应平时所讲的正数第一位为 0、负数第一位为 1,且左边最下面为最大的负数

几个重要的计量单位:

BYTE 字节 8bit

WORD 字 16bit 2字节

DWORD 双字 32bit 4字节

逻辑运算

二进制的逻辑运算:

  1. 逻辑运算:或(or |)只要有一个为 1 就是 1

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

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

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

    逻辑运算的具体应用:

    1. CPU 是如何计算 2+3=?

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

    3. 最简单的加密算法

    课后作业:

    1. 八进制数 2-5 在计算器中的结果是:1777777777777777777775,为什么?

      因为八进制是将 3 个二进制位合为 1 位,而计算机的字长(16/32/64位)通常是 2 的整数次幂,无法被 3 整除。当前计算机 64 位,64/3,商 21 余 1,最左边会剩余 1 位,也就是 1,如果计算机为 32 位,答案就会是 37777777775,16 位就会是 177775

    2. 使用异或对 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

    3. 只用逻辑运算计算 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