本人写的第一个 brainfuck 程序

 

                 刚写好的o(∩_∩)o...哈哈

+++++++[>+++++[>++>+<<-]>>>+>++>++<<<<<<-]
>>+++.[->+<]>.+++.[->+<]>.>[-<->]<---.>>[-<<->>]<<--.

带注释版本

%print "IloveU"
+++++++[>+++++[>++>+<<-]>>>+>++>++<<<<<<-]  %set memory as: 0 0 70 35 7 14 14
>>+++.                     %print 'I' = 73
[->+<]>.                   %print 'l' = 108
+++.                         %print 'o' = 111
[->+<]>.                   %print 'v' = 118
>[-<->]<---.              %print 'e' = 101
>>[-<<->>]<<--.      %print 'U' = 85

==============参考资料摘录==================

Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。

Müller的目标是建立一种简单的、可以用最小的编译器来实现的、符合Turing complete思想的编程语言。这种语言由八种状态构成,为Amiga机器编写的编译器(第二版)只有240个字节大小!

就象它的名字所暗示的,brainfuck程序很难读懂。尽管如此,brainfuck图灵机一样可以完成任何计算任务。虽然brainfuck的计算方式如此与众不同,但它确实能够正确运行。

这种语言基于一个简单的机器模型,除了指令,这个机器还包括:一个以字节为单位、被初始化为零的数组、一个指向该数组的指针(初始时指向数组的第一个字节)、以及用于输入输出的两个字节流。

下面是这八种状态的描述,其中每个状态由一个字符标识:

字符含义
>指针加一
<指针减一
+指针指向的字节的值加一
-指针指向的字节的值减一
.输出指针指向的单元内容(ASCII码)
,输入内容到指针指向的单元(ASCII码)
[如果指针指向的单元值为零,向前跳转到对应的]指令的次一指令处
]如果指针指向的单元值不为零,向后跳转到对应的[指令的次一指令处
(按照更节省时间的简单说法,"]"也可以说成“向后跳转到对应的"["状态”。这两解释是一样的。)
(第三种同价的说法,"["意思是"向前跳转到对应的"]"",]意思是"向后跳转到对应的[指令的次一指令处,如果指针指向的字节非零。")

Brainfuck程序可以用下面的替换方法翻译成C语言(假设ptr是char*类型):
BrainfuckC
>++ptr;
<--ptr;
+++*ptr;
---*ptr;
.putchar(*ptr);
,*ptr =getchar();
[while (*ptr) {
]}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值