[Feelings & Sharing] 胎教:手搓cpu(虚拟)-之逻辑门
Tofloor
poster avatar
欧阳魔侠
deepin
2022-05-28 06:30
Author
  大道至简,最宏大的道理,便是最简单的道理,是不管你是文科生,理科生还是小学生,只要高于胎教水平,都能理解的道理。
 
  计算机原理脱胎于宇宙大道 ,没道理只有那么小部份人能搞懂,之所以形成这样的局面,原因有二:一是语言障碍,计算机发展的时候,我们最大的渴望只是活着,没跟上时代;二是翻译来的术语不够接地气,不符合我们的思维和习惯;
 
  我尝试下只用32个英文单词,加本土地气,看能不能把计算机原理拉低到胎教水平,不管文科生,理科生,小学生都能明白,原来计算机原理如此简单。
 
  修仙有言:一元而始,二衍阴阳,三化万物。意思就是说,在计算机中,一类元器件,它只有两种状态阴和阳(阳:我们用’1‘表示,阴:我们用‘0’表示),我们制作三态门(与门,或门,非门),就可以模拟万物了。
 
  现在我举栗子说明:
 
  与门:两个入口输入,转换到一个出口输出。规则是:输入只要有一个状态是0(阴),那输出就是0(阴)。
  比如:汉子属阳(1),妹纸属阴(0),两个人分别从‘与门’的两个入口进出,只要进去的两人中有一个是妹纸(0),经转换变成一个人,那这个人就是妹子(0)。
 
  或门:两个入口输入,转换到一个出口输出。规则是:输入只要有一个状态是1(阳),那输出就是1(阳)。
  比如:汉子属阳(1),妹纸属阴(0),两个人分别从‘或门’的两个入口进出,只要进去的两人中有一个是汉子(1),经转换变成一个人,那这个人就是汉子(1)。
 
 
  非门:一个入口输入,一个出口输出。规则是:进入的是1(阳),出来的是阴(0);进入的是0(阳)出来的就是1(阴)。
比如:汉子属阳(1),妹纸属阴(0),进去的是汉子(1),出来的就是妹纸(0),进去的是妹纸(0),出来的就是汉子(1)。
 
  这就是机算机最其本的组成器件,修仙者的话说就是:道生一,一生二,三生万物。
  如果你家里有矿,可以去淘宝,买到这三种器件,手搓实体cpu。如果你像我一样较穷,可以用代码虚拟这三种器件。别奇怪,虚拟机就这么来的。
 
 
附代码如下:
/****************************************************
* 本文代码针用于胎教编写(除语法关键字一律用拼音),大神请经绕路
* 变量命名是拼音加声调,1 2 3 4 代表四个声调
* "_数字"形式代表变量的序号,为适应人的习惯从1开始
* 特别声明:这是代码界的泥石流,谁若照做了:(重要的事说三遍)
* 我保证你不被打死!
* 我保证你不被打死!
* 我保证你不被打死!
***************************************************/


#include "stdio.h"
//############# 逻辑门:与 ##################
typedef struct{
unsigned char ru4_1:1; //输入
unsigned char ru4_2:1; //输入
unsigned char chu1:1; //输出
}YU3;
//模拟电路数字转换
void yu3men2(YU3* yu3){
yu3->chu1 = yu3->ru4_1 & yu3->ru4_2;
}

//############# 逻辑门:或 ##################
typedef struct{
unsigned char ru4_1:1; //输入
unsigned char ru4_2:1; //输入
unsigned char chu1:1; //输出
}HUO4;
//模拟电路数字转换
void huo4men2(HUO4* huo4){
huo4->chu1 = huo4->ru4_1 | huo4->ru4_2;
}
//############# 逻辑门:或 ##################
typedef struct{
unsigned char ru4_1:1; //输入
unsigned char chu1:1; //输出
}FEI1;
//模拟电路数字转化
void fei1men2(FEI1* fei1){
fei1->chu1 = ~fei1->ru4_1;//模拟电路逻辑
}

//############# 逻辑门:测试函数 ##################
void main(void){
YU3 yu3_1; //一个 与门
yu3_1.ru4_1 = 1; //与门 输入
yu3_1.ru4_2 = 1; //与门 输出
yu3men2(&yu3_1); //经过与门电路转换,打印输出结果
printf("与门 输入:%d 输入:%d 输出:%d\r\n", yu3_1.ru4_1, yu3_1.ru4_2, yu3_1.chu1);

HUO4 huo4_1; //一个 或门
huo4_1.ru4_1 = 1; //或门 输入
huo4_1.ru4_2 = 0; //或门 输入
huo4men2(&huo4_1); //经过或门电路,打印输出结果
printf("或门 输入:%d 输入:%d 输出:%d\r\n", huo4_1.ru4_1, huo4_1.ru4_2, huo4_1.chu1);

FEI1 fei1_1; //一个 非门
fei1_1.ru4_1 = 1; //非门 输入
fei1men2(&fei1_1); //经过非门电路,打印输入结果
printf("非门 输入:%d 输出:%d\r\n", fei1_1.ru4_1, fei1_1.chu1);
}
 
编译,运行
xx@deepin:~/ji4suan4ji1$ gcc luo2ji2men2.c
xx@deepin:~/ji4suan4ji1$ ./luo2ji2men2
与门 输入:1 输入:1 输出:1
或门 输入:1 输入:0 输出:1
非门 输入:1 输出:0
 

明天去学样门口套个娃,试试,如果他能听懂,再来搓个加法器,译码器什么的。

Reply Favorite View the author
All Replies

No replies yet