0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
0,1,2,3,4,5,6,7,8,9,A, B, C, D, E, F, 10
10进制与2进制
0------0000 1------0001 2------0010 3------0011 4------0100 5------ 0101 6------0110 7------0111
8------1000 9------1001 10------1010 11------1011 12------1100 13------1101 14------1110 15------1111
比较好记(A=1010) B C D E F
牢记 10A.11B.12C.13D.14E.15F
出现1个1的是 1,2,4,8
出现2个1的是 3,5,6,9,10,12
出现3个1的是 7,11,13,14
10的16进制恰恰是1010,11的16进制恰恰是1011,是16进制的末两位,
12是1100。
运算都是查出来的,不是算出来的。加法运算是基本地址+偏移地址而得出。
反码
补码 负数所对应的正数先取反,再加1,其余位用1填充。
not 取反 按位取反 1101 -》》》1111 0010 不足的地方用1补齐。
xor 相同则该位为0,不同则为1. 牢记xor eax,eax,返回0.将得到的结果赋值给eax。(同0异1)
or 有1则为1,否则为0
and 都1则为1,否则为0
将对应位设置为1,其他位保持不变,如何操作?用OR
通过该指令可将操作对象的相应位设为0,其他位保持不变。用and
6A 01 push 0x1
6A 11 push 0x11
68 23010000 push 0x123
68 34120000 push 0x1234
68 45230100 push 0x12345
68 56341200 push 0x123456
68 67452301 push 0x1234567
68 78563412 push 0x12345678
68 89674523 push 0x23456789
/* */
B8 01000000 mov eax,0x1
B8 12000000 mov eax,0x12
B8 23010000 mov eax,0x123
B8 34120000 mov eax,0x1234
B8 45230100 mov eax,0x12345
B8 56341200 mov eax,0x123456
B8 67452301 mov eax,0x1234567
B8 78563412 mov eax,0x12345678
B8 89674523 mov eax,0x23456789
/* */
BB 01000000 mov ebx,0x1
BB 12000000 mov ebx,0x12
BB 23010000 mov ebx,0x123
BB 34120000 mov ebx,0x1234
BB 45230100 mov ebx,0x12345
BB 56341200 mov ebx,0x123456
BB 67452301 mov ebx,0x1234567
BB 78563412 mov ebx,0x12345678
BB 89674523 mov ebx,0x23456789
83C0 01 add eax,0x1
83C0 12 add eax,0x12
05 23010000 add eax,0x123
05 34120000 add eax,0x1234
05 45230100 add eax,0x12345
05 56341200 add eax,0x123456
05 67452301 add eax,0x1234567
05 78563412 add eax,0x12345678
05 89674523 add eax,0x23456789