proj2(review)
2.1 Binary Numbers










(an easy way: choose numbers from high to low)

2.2 Binary Addtion






Half Adder

Full Adder

Multi-bit Adder

Half Adder – Full Adder – Multi-bit Adder – 16-bit adder



2.3 Negative Numbers
① Expression of negative numbers
way1

way2:
前一半的二进制数字(0-7)用来表示正数,后一半的二进制数字(8-15)留作表示负数(eg 表示-3,16-3=13)


② Addtion in 2’s Complement



-2+(-3)=-5,-5的补码就是11(1011)
③ Computing -x ⭐

- Eg:算-4的二进制表达:4=100,1111-0100(1111怎么来的,2的4次方-1=15,15的二进制1111)
- 取反码:1111-0100=1011,求补码:1011+1=1100
- 1100=12,就是4的补码(16-4=12)

具体步骤:
① (2的n次方-1)-x

② 得到的结果+1

③ 即 2的n次方-x = (2的n次方-1)-x +1



2.4 ALU


① The Hack ALU



② The Hack ALU operation

(& == And ,| == Or)

③ example



④ zr,ng(other control bits)


2.5 Project 2 Overview







2.6 code
HalfAdder
1 | /** |
FullAdder
(不理解为什么有3个abc。但是直接看真值表发现只有1/3个数字是为1,就知道都用or这个方式了)
1 | /** |
Add16
1 | /** |
Inc16
1 | /** |
ALU
1 | /** |
1 | CHIP ALU { |
评论

