中国古代演算用算筹,记录数量用一、二、三、四、……十、百、千、万等汉字,这是比较简明方便的。因此,虽然商周甲骨、金文和秦汉简牍中曾出现一些按照算筹形象描绘下来的记数符号,但在很长时期内并未形成一套完整的用于记数和演算的数码。

由于社会和数学本身发展的需要,唐代已开始用数码记数,宋元时期的数码已较完善,而且其使用也更加普遍。现存最早记有数码的著作是唐代敦

在十三世纪,中国数学有了高度的发展,有些数学方法如高次方程数值解法等的演算程序比较复杂,仅仅依靠文字说明难以讲清楚,因此一些数学家便把解题过程的算草详细记录下来并写入其数学专著,于是出现了较完整的中国数码。如南宋秦九韶《数书九章》和杨辉数学著作所用的数码是:

示36、108、126等,其数码完全摹仿算筹摆放形式,用空位表示零,记数法也与筹算记数原则相同,但笔划长短不等,不如算筹记数那样整齐。北宋时尚未出现“0”号。

筹记数法中一条横线或竖线代表五。金元时期李冶《测圆海镜》和《益古演段》、朱世杰《四元玉鉴》和《算学启蒙》在论述天元术时所用的数码,则完全采用了算筹记数中九个基数的写法,但笔画长短不齐,并添设了一个零号“”:

零的符号在一套完整的数码中是必不可少的,并且在数学中有重要的意义。有人认为中国数码中的零号是外国传来的,其实并非如此。印度数码和阿拉伯数码早年曾传入我国,如唐代天文学家瞿昙悉达在《开元占经》中曾介绍印度数码,其中用一个圆点作为零号表示空位,元代安西王府所藏铁制纵横图,其数字均为阿拉伯数码,其中也有“0” 号,但这些数码当时并未为我国学者所采用。中国数码中的零号是宋元时期我国数学家和天文学家自己创造的。新旧《唐书》、《宋史》等所载各家历法曾用“空” 字表示天文数据的空位。为了避免误解,宋代学者又仿照古代用方框“”表示脱落文字的习惯,用“”来表示数据中的空位,如南宋蔡沈《律吕新书》将林钟律管的律数118098记作“林钟十一万八千九十八”,将南吕律管的律数104976记作“南吕十万四千九百七十六”等。后来,为了书写方便,方框 “”顺笔写成了圆圈“”,于是形成了中国数码中的零码。现在已知最早使用“”表示空位的是金《大明历》,其中有“三百九”、“五百五”、“二千 七”等等,但《大明历》使用更多的仍是“空”字。直到宋元四大数学家的著作中才普遍使用了零码。

明代以后珠算术逐渐推广,为区分算筹记数位数而采用的纵横相间制已无实际意义,因而在需要用数码记数时,除表示1,2,3的数码仍兼用纵横二式以防混淆外,其他数码都单用南宋数码的横式,明程大位《算法统宗》称之为“暗码”。后来,暗码中

很长时间的商用暗码(又称苏州码):

清末学制改革设立了新式学堂,各地还有许多教会学校,大多采用新编译的数学课本,现在通用的印度-阿拉伯数码才逐渐传播开来。