作为新生的,不用背负任何历史包袱的全新语言,仓颉充分吸收了过去数十年来众多编程语言之长,原生智能化、天生全场景、高性能、强安全。作为华为鸿蒙系统的平台语言,仓颉拥有良好的发展潜力和前景,极有可能成为第一款形成世界级影响的国产编程语言。青少年现在学习仓颉,就是在投资未来 !
版权声明
作者:重庆大学 陈波
本文可以在互联网上自由转载,但必须注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。本文不可以以纸质出版为目的进行改编、摘抄。
2.3 整数类型及其字面量(第2部分)
⛵ 知所以然
为了照顾人类的习惯,前述程序中的数值字面量都是十进制的。事实上,仓颉还允许以二进制、八进制、十六进制形式书写字面量,请见下述程序。
1 | //Project - IntLiterals |
上述程序的执行结果为:
1 | a = 31, b = 31, c = 31 |
▶第5行:二进制字面量以0b(数字0,字母b)或者0B开头,字母b源自英文单词binary。本行中的字面量0b00011111如果换算成十进制,其值为31。
▶第6行:八进制字面量以0o(数字0,字母o)或者0O开头,字母o源自英文单词octal。本行中的字面量0o37换算成十进制,其值亦为31。
▶第7行:十六进制字面量以0x(数字0,字母x)或者0X开头,字母x源自英文单词hexadecimal中的x。对于本行内字面量0x1F,1在“十”位,位值为1,位权为16,F在“个”位,位值为15,位权为1。将各位位值乘以位权并求和,可知0x1F也等于十进制的31。
▶第8行:与前述变量a,b不同,第7行的对象c通过let关键字定义,它是一个常量(constant)而不是变量。在首次初始化赋值之后,常量不可以修改。因此,本行代码是非法的,只能注释起来。图2-7以常量c为例,说明了定义并初始化一个常量的通用语法。
▶第9行:使用字符串插值输出变量a、b以及常量c的值,从执行结果可见,虽然程序以不同的进制提供了各对象的初始值,但它们事实上都等于十进制的31。
🌌 见微知著
计算机里的一切都是以二进制为基础的,上述程序中的二进制、八进制、十六进制表达都可以理解为计算机给“愚蠢”人类提供的接口。上述字面量0b00011111、0o37、0x1F在计算机内,都会转换成二进制形式进行存储和计算,只是在输出执行结果给人类阅读前,再行转换成人类熟悉的十进制形式(程序第9行)。
🚠 物见其然
24等于16,这意味着十六进制的每1位可对应4个二进制位,详情请见表2-2。电气、通信、自动化工程师可以非常方便地通过“口算”在二进制和十六进制之间进行转换。对于人类工程师而言, 0x3F17相较于0b0011 1111 0001 0111,更容易理解、记忆和书写。
数值 | 16进制 | 2进制 | 数值 | 16进制 | 2进制 | 数值 | 16进制 | 2进制 |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0000 | 6 | 6 | 0110 | 12 | C | 1100 |
1 | 1 | 0001 | 7 | 7 | 0111 | 13 | D | 1101 |
2 | 2 | 0010 | 8 | 8 | 1000 | 14 | E | 1110 |
3 | 3 | 0011 | 9 | 9 | 1001 | 15 | F | 1111 |
4 | 4 | 0100 | 10 | A | 1010 | |||
5 | 5 | 0101 | 11 | B | 1011 |
同样地,23等于8,八进制的每1位可对应3个二进制位。
海洋饼干叔叔的仓颉语言学习笔记将持续更新… 敬请期待。
欢迎支持海洋饼干叔叔系列程序设计教材,案例、配套资源丰富,实践性强,高等教育出版社出版。
高校教学同行如果需要样书,或者索取教学支持资源, 请联系公众号或者海洋饼干叔叔本人。
《Python编程基础及应用》 | 《Python编程基础及应用实验教程》 | 《C++编程基础及应用》 |
---|---|---|