开发者“疯狂”整活:用纯 C 语言,从头编写一个 Rust 编译器!
也就是说,rustc1.80.0版本是用rustc1.79.0版本编译的,rustc1.79.0版本又是由rustc1.78.0版本编译的……以此类推,一直可以追溯到rustc0.7版本。而那时,编译器是用OCaml写的,因此只需要一个OCaml编译器就能得到一个完整的rustc程序。好了,问题解决了,我们已经搞清楚如何从头开始创...
日本机构称发现距今1300多年的九九乘法表,“九九歌”在中国1800年...
在本次研究中,考古人员借助最新红外观测设备辨认了木简上的字迹,木简右上角写着“九九八十一”,考古人员判断“九九八十一”下方很可能是“四九三十六”,再下方是“六八四十八”。这样就出现了规律,考古人员认为这个九九乘法表是从数字9的乘法口诀开始,按照乘数和被乘数均递减的规律从右向左书写,并按照每横排5条...
这些年背过的面试题——实战算法篇
(1)利用放号器,初始值为0,对于每一个短链接生成请求,都递增放号器的值,再将此值转换为62进制(a-zA-Z0-9),比如第一次请求时放号器的值为0,对应62进制为a,第二次请求时放号器的值为1,对应62进制为b,第10001次请求时放号器的值为10000,对应62进制为sBc。(2)将短链接服务器域名与放号器的62进制值进行...
MongoDB索引使用总结
首先会先将RecordId后缀去掉,插入ks1,然后将其Remove掉,先插入后删除KeyString的操作利用了wt引擎乐观锁的特性,构成了写冲突的条件;假设此时来了另外一个的插入操作,KeyString相同但是RecordId不同,也得需要先插入ks1,但是wt引擎检查到KeyString已经被修改,该操作抛出异常;所以先插入后...
算力简史,这是一段波澜壮阔的历史
所有的人类早期先进文明,都有自己的文字,也有自己的数字。基于数字,他们还建立了数字系统,例如巴比伦文明的六十进制,玛雅文明的二十进制或十八进制,中国和古埃及的十进制。数字出现后,人们将计数和算数的过程,称为计算。这是计算一词的来源。古希腊在数字和计算上比较领先,很早就创立了算术、几何、代数等独立学科。
“告别 8 万行 C++ 代码,我用 4 千行 C 代码就搞定了!”
主要思路是,利用一个非常小的wasm二进制作为stage1内核,提交到源代码控制,这样就可以用它来编译源代码中的任何提交(www.e993.com)2024年11月14日。我们提供了一个C编写的WASI解释器,然后用它将Zig编译器代码编译成C代码。之后用系统的C编译器对C代码进行编译和连接,生成stage2二进制文件。接着,stage2二进制文件就...
单片机开发中的C语言技巧(上)
答案是不相等的。我们知道,16进制常量以’0x’为前缀,10进制常量不需要前缀,那么8进制呢?它与10进制和16进制表示方法都不相同,它以数字’0’为前缀,这多少有点奇葩:三种进制的表示方法完全不相同。如果8进制也像16进制那样以数字和字母表示前缀的话,或许更有利于减少软件Bug,毕竟你使用8进制的次数可能都不会有...
Linux之父:我们不会用Rust取代C语言开发内核
十年后,你写了一本书,叫作“JustforFun:TheStoryofanAccidentalRevolutionary”(中译名:《只是为了好玩:Linux之父林纳斯自传》),对那段历史进行了深度回顾。今年8月,Linux将迎来它的30周年纪念日!在这个过程中,你是在什么时候开始意识到Linux并不仅仅是一个“爱好”的?Linus...
8岁表妹一道数学算术题,99%的人答错了
使用的数字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共16种。从右往左分别为160的位、161的位、162的位、163的位……(基数是16)在16进制计数法中,使用A、B、C、D、E、F(有时也使用小写字母a、b、c、d、e、f)来表示10以上的数字。
单片机C语言的补码解释及运算
对于计算机,其概念和方法完全一样。n位计算机,设n=8,所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2^8。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以...