CTF-RE-学习记录-汇编
本文最后更新于:2023年11月8日 中午
八进制运算
加法表
1+1=2 | ||||||
---|---|---|---|---|---|---|
1+2=3 | 2+2=4 | |||||
1+3=4 | 2+3=5 | 3+3=6 | ||||
1+4=5 | 2+4=6 | 3+4=7 | 4+4=10 | |||
1+5=6 | 2+5=7 | 3+5=8 | 4+5=11 | 5+5=12 | ||
1+6=7 | 2+6=10 | 3+6=11 | 4+6=12 | 5+6=13 | 6+6=14 | |
1+7=10 | 2+7=11 | 3+7=12 | 4+7=13 | 5+7=14 | 6+7=15 | 7+7=16 |
乘法表
1*1=1 | ||||||
---|---|---|---|---|---|---|
1*2=2 | 2*2=4 | |||||
1*3=3 | 2*3=6 | 3*3=11 | ||||
1*4=4 | 2*4=10 | 3*4=14 | 4*4=20 | |||
1*5=5 | 2*5=12 | 3*5=17 | 4*5=24 | 5*5=31 | ||
1*6=6 | 2*6=14 | 3*6=22 | 4*6=30 | 5*6=36 | 6*6=44 | |
1*7=7 | 2*7=16 | 3*7=25 | 4*7=34 | 5*7=43 | 6*7=52 | 7*7=61 |
十六进制表示二进制(全文背诵)
十六进制可以简写二进制
二进制 | 十六进制 |
---|---|
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
数据宽度
计算机中常见的数据宽度
数据类型 | 宽度(位) | 存储范围 |
---|---|---|
位(BIT) | 1 | |
字节(BYTE) | 8 | 0~0xFF |
字(Word) | 16 | 0~0xFFFF |
双字(DoubleWord) | 32 | 0~0xFFFFFFFF |
超出最大宽度存储的内容会被丢弃
例如char x = 0x1FF存入地址后1会被丢弃
有符号数编码规则
正数原码补码反码相同
1 -> 0 0 0 0 0 0 0 1
6 -> 0 0 0 0 0 1 1 0
负数原码反码补码编码规则
原码:最高位为符号位,其余各位为数值本身的绝对值
反码:
- 正数:反码与原码相同
- 负数:符号位为1,其余位对原码取反
补码
正数:补码与源码相同
负数:符号位为1,其余位对原码取反加1
-1
1 0 0 0 0 0 0 1__原码__
1 1 1 1 1 1 1 0__反码__
1 1 1 1 1 1 1 1__补码__
-7
1 0 0 0 0 1 1 1
1 1 1 1 1 0 0 0
1 1 1 1 1 0 0 1
4+5=?的运算过程
异或
0000 0100 XOR 0000 0101 = 0000 0001
判断是否有进位
0000 0100 & 0000 0101=0000 0100
&运算后,全0则无进位,有1则在1所在位数+1的位数进1,此处&运算后值不为0
继续异或
0000 0001 XOR 0000 1000 = 0000 1001
判断是否有进位
0000 0001 & 0000 1000 = 0000 0000
4-5=?的运算过程
4-5=4+(-5)
异或
0000 0100 XOR 1111 1011 = 1111 1111
判断是否有进位
0000 0100 & 1111 1011 = 0000 0000
故结果为1111 1111=FF=-1
CTF-RE-学习记录-汇编
https://www.0error.net/2020/12/1a09cf7e.html