plantuml
@startuml
skinparam shadowing false
title 4bit-CPU 符号なし
state0000:0000
state0001:0001
state0010:0010
state0011:0011
state0100:0100
state0101:0101
state0111:0111
state1000:1000
state1001:1001
state1010:1010
state1011:1011
state1100:1100
state1101:1101
state1110:1110
state1111:1111
stateoverflow:1
underflow:1
state join_state <<fork>>
state1110 -left-> join_state
state1111 --> join_state
join_state -[#DD00AA,dashed]-> state0001 : NAND
join_state -[#blue,dashed]-> state0000 : NOR
join_state -[#green,dashed]-> state1111 : OR
join_state -[#red,dashed]-> state1110 : AND
underflow --> state0000 : clear
state0000 -[#red,bold]-> state0001 : 加算
state0001 -[#red,bold]-> state0010 : 加算
state0010 -[#red,bold]-> state0011 : 加算
state0011 -[#red,bold]-> state0100 : 加算
state0100 -[#red,bold]-> state0101 : 加算
state0101 -[#red,bold]-> state0110 : 加算
state0110 -[#red,bold]-> state0111 : 加算
state0111 -[#red,bold]-> state1000 : 加算
state1000 -[#red,bold]-> state1001 : 加算
state1001 -[#red,bold]-> state1010 : 加算
state1010 -[#red,bold]-> state1011 : 加算
state1011 -[#red,bold]-> state1100 : 加算
state1100 -[#red,bold]down-> state1101 : 加算
state1101 -[#red,bold]-> state1110 : 加算
state1110 -[#red,bold]-> state1111 : 加算
state1111 -[#red,bold]-> state0000 : 加算
state1111 -[#red,bold]-> stateoverflow : 加算
stateoverflow --> state0000 : clear
underflow <-[#blue,bold]- state0000 : 減算
state0000 <-[#blue,bold]up- state0001 : 減算
state0001 <-[#blue,bold]- state0010 : 減算
state0010 <-[#blue,bold]- state0011 : 減算
state0011 <-[#blue,bold]- state0100 : 減算
state0100 <-[#blue,bold]- state0101 : 減算
state0101 <-[#blue,bold]- state0110 : 減算
state0110 <-[#blue,bold]- state0111 : 減算
state0111 <-[#blue,bold]- state1000 : 減算
state1000 <-[#blue,bold]- state1001 : 減算
state1001 <-[#blue,bold]- state1010 : 減算
state1010 <-[#blue,bold]- state1011 : 減算
state1011 <-[#blue,bold]- state1100 : 減算
state1100 <-[#blue,bold]- state1101 : 減算
state1101 <-[#blue,bold]- state1110 : 減算
state1110 <-[#blue,bold]- state1111 : 減算
state0000 --> state0000 : nop
state0001 --> state0001 : nop
state0010 --> state0010 : nop
state0011 --> state0011 : nop
state0100 --> state0100 : nop
state0101 --> state0101 : nop
state0110 --> state0110 : nop
state0111 --> state0111 : nop
state1000 --> state1000 : nop
state1001 --> state1001 : nop
state1010 --> state1010 : nop
state1011 --> state1011 : nop
state1100 --> state1100 : nop
state1101 --> state1101 : nop
state1110 --> state1110 : nop
state1111 --> state1111 : nop
@enduml
4bit cpu new
plantuml
@startuml
skinparam shadowing false
title 4bit-CPU 符号なし
state0000:0000
state0001:0001
state0010:0010
state0011:0011
state0100:0100
state0101:0101
state0111:0111
state1000:1000
state1001:1001
state1010:1010
state1011:1011
state1100:1100
state1101:1101
state1110:1110
state1111:1111
stateoverflow:1
underflow:1
underflow --> state0000 : clear
state0000 -[#red,bold]-> state0001 : 加算
state0001 -[#red,bold]-> state0010 : 加算
state0010 -[#red,bold]-> state0011 : 加算
state0011 -[#red,bold]-> state0100 : 加算
state0100 -[#red,bold]-> state0101 : 加算
state0101 -[#red,bold]-> state0110 : 加算
state0110 -[#red,bold]-> state0111 : 加算
state0111 -[#red,bold]-> state1000 : 加算
state1000 -[#red,bold]-> state1001 : 加算
state1001 -[#red,bold]-> state1010 : 加算
state1010 -[#red,bold]-> state1011 : 加算
state1011 -[#red,bold]-> state1100 : 加算
state1100 -[#red,bold]down-> state1101 : 加算
state1101 -[#red,bold]-> state1110 : 加算
state1110 -[#red,bold]-> state1111 : 加算
state1111 -[#red,bold]-> state0000 : 加算
state1111 -[#red,bold]-> stateoverflow : 加算
stateoverflow --> state0000 : clear
underflow <-[#blue,bold]- state0000 : 減算
state0000 <-[#blue,bold]up- state0001 : 減算
state0001 <-[#blue,bold]- state0010 : 減算
state0010 <-[#blue,bold]- state0011 : 減算
state0011 <-[#blue,bold]- state0100 : 減算
state0100 <-[#blue,bold]- state0101 : 減算
state0101 <-[#blue,bold]- state0110 : 減算
state0110 <-[#blue,bold]- state0111 : 減算
state0111 <-[#blue,bold]- state1000 : 減算
state1000 <-[#blue,bold]- state1001 : 減算
state1001 <-[#blue,bold]- state1010 : 減算
state1010 <-[#blue,bold]- state1011 : 減算
state1011 <-[#blue,bold]- state1100 : 減算
state1100 <-[#blue,bold]- state1101 : 減算
state1101 <-[#blue,bold]- state1110 : 減算
state1110 <-[#blue,bold]- state1111 : 減算
state0000 --> state0000 : nop
state0001 --> state0001 : nop
state0010 --> state0010 : nop
state0011 --> state0011 : nop
state0100 --> state0100 : nop
state0101 --> state0101 : nop
state0110 --> state0110 : nop
state0111 --> state0111 : nop
state1000 --> state1000 : nop
state1001 --> state1001 : nop
state1010 --> state1010 : nop
state1011 --> state1011 : nop
state1100 --> state1100 : nop
state1101 --> state1101 : nop
state1110 --> state1110 : nop
state1111 --> state1111 : nop
@enduml
論理演算
plantuml
state0000:0000
state0001:0001
state1110:1110
state1111:1111
state join_state <<fork>>
state1110 -left-> join_state
state1111 --> join_state
join_state -[#DD00AA,dashed]-> state0001 : NAND
join_state -[#blue,dashed]-> state0000 : NOR
join_state -[#green,dashed]-> state1111 : OR
join_state -[#red,dashed]-> state1110 : AND