mathematica进制(数字格式)转换
光看这个名字可能感觉不知道在讲什么,这一篇其实主要就是讲数字的十进制转二进制,二进制转十进制,十进制转罗马数字等的。
使用的函数
这一篇会用到的函数有:
1. IntegerString
:这个用来把十进制的数子转换成其他的格式。
2. FromDigits
:把x进制的数字转换成十进制。
3. Head
:查看数据类型。
4. LetterNumber
:给出字母对应的位置
5. FromLetterNumber
:给出对应数字的字母
简单例子
把十进制转换成二进制
IntegerString[10, 2]
要注意的是,转换成二进制后的数据不能直接做运算,因为是String
类型的。我们可以使用ToExpress
来进行转换数据类型来进行计算。
IntegerString[
ToExpression[IntegerString[10, 2]] +
ToExpression[IntegerString[10, 2]], 10]
查看数据类型
我们可以通过Head
来查看数据类型,可以看到一开始是String数据类型的,加了ToExpress之后是Integer数据类型了。
把二进制转换成十进制
上面是把十进制转换成二进制,理所当然,我们想到了如何把二进制转换为十进制。
FromDigits["10", 2]
我们看一下之前的例子,把10转换成2进制相加,再转换成10进制,查看结果是否正确,可以看到计算是正确的。
FromDigits[
IntegerString[
ToExpression[IntegerString[10, 2]] +
ToExpression[IntegerString[10, 2]], 10], 2]
任意进制之间的相互转化
有了上面的二进制和十进制的转换,下面我们看一下任意进制的转换,该例子是十进制和八进制的转换。
把十进制转换成罗马数字
除了能将不同进制的数字相互转化,还能将数字与罗马数字转化。这些帮助文档中也会提及,大家也可以自行翻看,我在这里就简单介绍一下。
找到十进制对于的字母
就直接看下面的例子,也是能看懂的
生成字母表
我们应用上面的知识,来生成一张英文字母和希腊字母对应的表格。
最后做到的效果如下图所示:
其实做起来想法是很简单的,就是使用对应数字极其对应的字母。下面先来看第一种写法。
这种写法是使用Labeled来做注释的。
Table[Labeled[i,
Labeled[FromLetterNumber[i], FromLetterNumber[i, "Greek"]]], {i,
24}]
写出来的效果如下:
但是这样写有一个不方便的地方就是不能使用Grid
进行扩展,于是我们考虑下面的写法:
Grid[Transpose[
Table[{i, FromLetterNumber[i], FromLetterNumber[i, "Greek"]}, {i,
24}]], Frame -> All]
这种写法的优点就是便于扩展,因为数据是保存成了矩阵的形式
上面生成的表格还是不够好看,我想分成上下两层,突出字母,于是就修改Grid
的代码即可。
Rasterize[
Grid[Flatten[
Transpose[
Partition[
Table[{i, Style[FromLetterNumber[i], Bold],
Style[FromLetterNumber[i, "Greek"], Bold]}, {i, 24}],
12][[#]]] & /@ Range[2], 1], Frame -> {False, All},
Background -> {None, {{Pink, Yellow, Yellow}}}],
RasterSize -> 2000]
于是我们就得到了上面的那张表格。
以上,所有
2017 / 7 / 1