八进制运算

加法表

1+1=2
1+2=32+2=4
1+3=42+3=53+3=6
1+4=52+4=63+4=74+4=10
1+5=62+5=73+5=84+5=115+5=12
1+6=72+6=103+6=114+6=125+6=136+6=14
1+7=102+7=113+7=124+7=135+7=146+7=157+7=16

乘法表

1*1=1
1*2=22*2=4
1*3=32*3=63*3=11
1*4=42*4=103*4=144*4=20
1*5=52*5=123*5=174*5=245*5=31
1*6=62*6=143*6=224*6=305*6=366*6=44
1*7=72*7=163*7=254*7=345*7=436*7=527*7=61

十六进制表示二进制(全文背诵)

十六进制可以简写二进制

二进制十六进制
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

数据宽度

计算机中常见的数据宽度

数据类型宽度(位)存储范围
位(BIT)1
字节(BYTE)80~0xFF
字(Word)160~0xFFFF
双字(DoubleWord)320~0xFFFFFFFF

超出最大宽度存储的内容会被丢弃

例如char x = 0x1FF存入地址后1会被丢弃

有符号数编码规则

正数原码补码反码相同

1 -> 0 0 0 0 0 0 0 1

6 -> 0 0 0 0 0 1 1 0

负数原码反码补码编码规则

原码:最高位为符号位,其余各位为数值本身的绝对值

反码:

  1. 正数:反码与原码相同
  2. 负数:符号位为1,其余位对原码取反

补码

  1. 正数:补码与源码相同

  2. 负数:符号位为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=?的运算过程

  1. 异或

    ​ 0000 0100 XOR 0000 0101 = 0000 0001

  2. 判断是否有进位

    0000 0100 & 0000 0101=0000 0100

    &运算后,全0则无进位,有1则在1所在位数+1的位数进1,此处&运算后值不为0

  3. 继续异或

    0000 0001 XOR 0000 1000 = 0000 1001

  4. 判断是否有进位

    0000 0001 & 0000 1000 = 0000 0000

4-5=?的运算过程

4-5=4+(-5)

  1. 异或

    0000 0100 XOR 1111 1011 = 1111 1111

  2. 判断是否有进位

    0000 0100 & 1111 1011 = 0000 0000

  3. 故结果为1111 1111=FF=-1