任何进制转成十进制,使用按权展开法,注意小数点。
十进制转成任意进制,使用短除法。
1个字节有8个位,每位分别用二进制的0和1来表示。分为无符号数和有符号数,下面以有符号数来说明,有符号数最高位是符号号,0表示正,1表示负。
原码:1 表示 0000 0001 -1表示 1000 0001 相加得 1000 0010 ,相当于-2,所以原码不直接用作计算。
反码:如果是正数,则与原码相同;如果是负数,除符号位之外,所有位在原码基础上反转, 如 1表示 0000 0001 , -1表示 1111 1110, 相加得 1111 1111,该值为负数,取其原码,则是 1000 0000,得出 -0,结果正确,但仍然有点古怪。
补码:如果是正数,则与原码、反码相同,如果是负数,则在反码基础上+1,比如 1表示为 0000 0001, -1 表示 1111 1111,相加得 1 0000 0000 ,即是 0,这个看上去最符合我们想要的结果。
移码:一般用于浮点运算中的接码,不管是正数还是负数,移码都是在补码基础上将首位取反。比如1表示为 0000 0001, -1表示 0111 1111,相加得 1000 0000,即 -0。
表示范围:
原码和反码的范围相同,补码比原码和反码的取值范围大1,这是因为补码的0只有0000 0000 这一种形式,而原码和反码的0有 0000 0000 和 1000 0000 两种形式。
原码和反码: -(2^(n-1) - 1) ~ 2^(n-1) -1
补码: -2^(n-1) ~ 2^(n-1) -1
其中 n 表示位数,比如8位,原码和反码的范围是 -127~127,补码范围是 -128~127
浮点数:
浮点数表示 N = M * R^e
其中,M称是尾数,e 是指数, R是基数。尾数使用一位非0数表示。
浮点数运算时,有三个步骤:对阶、尾数计算、结果格式化。
比如 0.123 * 10^2 + 0.1 * 10^3 会先转成 0.0123 * 10^3 + 0.1 * 10^3 转成 (0.0123+0.1) * 10^3 = 0.1123 * 10^3 = 1.123 * 10^2
主机:这里的主机实际只包含CPU和内存
CPU包括运算器和控制器
其中运算器包括4个部分:
1、算术逻辑单元ALU
2、累加寄存器AC
3、数据缓冲寄存器DR
4、状态条件寄存器 PSW
控制器包括4个部分:
1、程序计数器 PC
2、指令寄存器IR
3、指令译码器
4、时序部件