Brainfuck编程语言

Brainfuck是由 Urban Müller 于 1993 年设计的,是一种深奥的编程语言,在设计时并没有考虑到实用性。相反,它的目标是拥有尽可能最小的编译器,同时仍然是图灵完备的。

图灵完备是指机器执行任何其他可编程计算机能够执行计算的能力。简单来说,一切可计算的问题都能计算,这样的虚拟机或者编程语言就叫图灵完备的。这个词源于引入图灵机概念的数学家艾伦·图灵。

Brainfuck仅使用 8 个命令,提供了一种简约的编码方法。这是完整的语言。这组稀疏的命令操作一个存储单元数组,所有单元都初始化为零。

命令含义
>increases memory pointer, or moves the pointer to the right 1 block.
(指针指向下一个存储单元)
<decreases memory pointer, or moves the pointer to the left 1 block.
(指针指向上一个存储单元)
+increases value stored at the block pointed to by the memory pointer
(指针指向的存储单元的数据加1)
-decreases value stored at the block pointed to by the memory pointer
(指针指向的存储单元的数据减1)
.output the character signified by the cell at the pointer; like c putchar(). print 1 character to the console
(输出指针指向的数据单元所表示的字符)
,input a character and store it in the cell at the pointer; like c getchar(). input 1 character.
(输入一个字符,将其存储在指针指向的存储单元内)
[jump past the matching ] if the cell at the pointer is 0; like c while(cur_block_value != 0) loop.
(如果指针指向的存储单元的数据为0,则跳过匹配的])
]jump back to the matching [ if the cell at the pointer is nonzero; if block currently pointed to’s value is not zero, jump back to [
(如果指针指向的存储单元的数据非0,则跳转回匹配的[)

其它规则:
(1)Brainfuck对一组存储单元进行操作,每个存储单元最初都设置为零。存在有一个指针,最初指向第一个存储单元。
(2)Brainfuck编译器一般会提供具有30,000个1字节内存块组成的数组空间。
(3)Brainfuck编译器在编译时除上述的8个字符之外的任意字符都会被忽略,即都认为是注释。
(4)循环可以根据需要嵌套任意次数,但是所有[命令必须有一个对应的]命令。

Brainfuck语言的基础代码案例:

(1)循环语句

+++++[-]

等价于

*p=+5;
while(*p != 0){
*p--;
}

(2)基于ASCII码,打印"Hello, World!"

>+++++++++[<++++++++>-]<.>+++++++[<++++>-]<+.+++++++..+++.[-]
>++++++++[<++++>-] <.>+++++++++++[<++++++++>-]<-.--------.+++
.------.--------.[-]>++++++++[<++++>- ]<+.[-]++++++++++.
Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。 【内含:BF解释器,BF解释器源码,BF写的几个小程序】 ReadMe: Brainfuck 编程语言 [图灵完全] [8条指令] 语法: > 指针加一 < 指针减一 + 指针指向的字节的值加一 - 指针指向的字节的值减一 . 输出指针指向的单元内容(ASCII码) , 输入内容到指针指向的单元(ASCII码) [ 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处 ] 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处 特性: 8KB 环状内存(初始化为0) <>操作不会越界 加减操作环状 +-操作不会溢出(0xFF + 为 0x00) 文件说明: bf.exe 解释器 Usage: bf [-options] source where options include: -b buffered input (default mode) 缓冲输入(按回车才输入,默认) -i not buffered input 无缓冲输入 -e not buffered input without echo 无缓冲输入且不回显 bf.cpp 解释器的源代码(纯C实现) hello.txt HelloWorld程序 up.txt 这个程序将你的输入(小写字母)转换为大写(回车结束) add.txt 这个程序对两个一位数做加法,并输出结果(如果结果也只有一位数的话)(例如:输入2+3) mul.txt 这个程序对两个一位数做乘法,并输出结果(如果结果也只有一位数的话)(例如:输入2*3) factor.txt 这个程序分解多位数的因子,并输出结果(例如:输入1000) numwarp.txt 这个程序输入 ()-./0123456789abcdef 和空格的字符串,显示很有趣的排列结果(例如:输入520 1314) prime.txt 这个程序输入一个多位整数,输出从1到这个整数间的所有素数(例如:输入100) quine.txt 这个程序输出源代码本身 [以上程序,基本上依靠回车确认]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值