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

posted on 2017-07-01 11:24  WMN7Q  阅读(1217)  评论(0编辑  收藏  举报

导航