数据宽度_逻辑运算

0x01
4位宽度表示,假设计算机存储4位二进制数
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 2 3 4 5 6 7 8 9 A B C D E F

列表内容

有符号数:
正数: 0 1 2 3 4 5 6 7
负数: -1 -2 -3 -4 -5 -6 -7 -8
F E D C B A 9 8
0x02
8位宽度表示,假设计算机能只能存储8位二进制数。

无符号数: 0 1 2 3 4 ……FF(十进制2555)

有符号数:
正数: 0 1 2 3 4 5 6 7……7F
负数: -1 -2 -3 -4 -5- 6 -7 -8 ……-128
FF FE FD FC FB FA F9 F8 F7 F6 F5 F4……80

0x03
16进制宽度表示,假设计算机只能存储16位二进制数。

无符号数:0 1 2 3 4……FFFF

有符号数:
正数: 0 1 2 3 4 5 6 7 ……7FFF
负数: -1 -2 -3 -4 -5 -6 -7 -8……
FFFF FFFE FFFD FFFC FFFB FFFA FFF9 FFF8……

0x04
32位宽度表示,假设计算机只能存储32位二进制数。

无符号数: 0 1 2 3 4…… FFFFFFFF

有符号数:
正数: 0 1 2 3 4 5 6 7 ……7FFFFFFF
负数: -1 -2 -3 -4 -5 -6 -7 -8……
FFFFFFFF FFFFFFFE FFFFFFFD FFFFFFFC FFFFFFFB FFFFFFFA FFFFFFF9 FFFFFFF8……
0x05 计量单位
BYTE 字节 8bit
WORD 字 16bit
DWORD 双字 32bit

0x06 二进制的逻辑运算
1.逻辑运算:或(or |)只要有一个为1就是1
10110101
or 01010011


    11110111

2.逻辑运算:与(and &) 两个都为1才是1
10110011
and 11001100


    10000000

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


    01100110

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

not 10011100

       01100011
* e.g.1  CPU是如何计算2+3=?  

      2 + 3 = ?

x = 0010
y = 0011

    0010
xor 0011
---------
    0001     R=0001

    0010
and 0011
---------
    0010

    0010 << 1---0100

x = 0001
y = 0100

    0001
xor 0100     R=0101
---------
    0101

    0001
and 0100
---------
    0000 << 1---0000

    R =0101


* ` e.g.2 如果获取某个值的第N位的 值是多少?

 如  8F
        10001111
   and  00001000
  ---------------
        00001000


*   e.g.3最简单的加密算法

客户端 2015
密钥 54

      20           15           54

      00100000   00010101     01010100

加密:
00100000
xor 01010100
————-
01110100 74

      00010101
  xor 01010100
  -------------
      01000001    41


       74  41  `
解密:
           01110100
       xor 01010100
       -------------
           00100000   20

           01000001
       xor 01010100
       -------------
           00010101   15

          2015

你可能感兴趣的:(逆向学习)