数字常量

shell脚本在默认情况下都是把数字作为10进制数来处理, 除非这个数字采用了特殊的标记或者前缀. 如果数字以0开头的话那么就是8进制数. 如果数字以0x开头的话那么就是16进制数. 如果数字中间嵌入了#的话, 那么就被认为是BASE#NUMBER形式的标记法(有范围和符号限制).

下面根据具体的实例对这几种表示方法进行深入分析:

#!/bin/bash

let "dec = 32"

echo "decimal number = $dec"

let "oct = 032"

echo "octal number = $oct"

let "hex = 0x32"

echo "hexadecimal number = $hex"

let "bin = 2#1101"

echo "banary number = $bin"

let "b32 = 32#77"

echo "base-32 number = $b32"

let "b64 =64#@_"

echo "base-64 number = $b64"

exit 0

结果:

root@ubuntu:~/resource/shell-study/0506-2013# ./test6.sh

decimal number = 32

octal number = 26

hexadecimal number = 50

banary number = 13

base-32 number = 231

base-64 number = 4031

分析:

1.第一个没有添加如何描述,默认为十进制,32即32

2.这个数据添加了特殊的前缀“0”,是八进制,032即表示八进制的32,换算的十进制即(3*8的1次方+2*8的0次方),也就是十进制的24+2=26

3.这个数据添加了特殊的前缀“0x”,是十六进制,0x32即表示十六进制的32,换算的十进制即(3*16的1次方+2*16的0次方),也就是十进制的48+2=50

4.这个数据是BASE#NUMBER形式,BASE=2,NUMBER=1101,其实就是二进制的意思,1101即表示二进制的1101,换算的十进制即(1*2的3次方+1*2的2次方+0*2的1次方+1*2的0次方),也就是十进制的8+4+0+1=13

5.这个数据是BASE#NUMBER形式,BASE=32,NUMBER=77,其实就是三十二进制的意思,77即表示三十二进制的77,换算的十进制即(7*32的1次方+7*32的0次方),也就是十进制的224+7=231

5.这个数据是BASE#NUMBER形式,BASE=64,NUMBER=@_,其实就是六十四进制的意思,@_即表示三十二进制的@_,这里重点说明一下,在这个六十四进制中每组包括64位,即0-63,0-9即用0-9表示,但是后面的数字都是两位数,所以shell就给出了一种简单的方法来取代这些两位数,10-35这26个位就依次用26个小写字母表示(依次为a-z),36-61这26个位就依次用26个大写字母表示(依次为A-Z),最后还剩下62和63这两个位,聪明的shell于是就用“@”表示62,用“_”表示62,所以也就有了上面的方法了,所以换算成十进制就是62*64的1次方+63*64的0次方,即3968+63=4031

重要的注意事项:

使用一个超出给定进制的数字的话,,将会引起一个错误.

root@ubuntu:~/resource/shell-study/0506-2013# let "val = 081"

bash: let: val = 081: value too great for base (error token is "081")

提示数值过大,即八进制每位的最大值是7,而上面第二位却是8,所以提示错误

到现在看来,其实用八进制,十六进制完全可以不在使用“0”“0x”来表示了,完全可以全部用BASE#NUMBER形式取代,下面做一个下测试验证:

root@ubuntu:~/resource/shell-study/0506-2013# let "val = 8#32"

root@ubuntu:~/resource/shell-study/0506-2013# echo $val

26

root@ubuntu:~/resource/shell-study/0506-2013# let "val = 16#32"

root@ubuntu:~/resource/shell-study/0506-2013# echo $val

50

root@ubuntu:~/resource/shell-study/0506-2013#

结果和上面的结果是一致的

待续。。。。。。

java数字常量_数字常量 - javawebsoa - 博客园相关推荐

  1. java 粒子滤波_粒子滤波 - gary_123 - 博客园

    跟着博主http://blog.csdn.net/heyijia0327/article/details/40899819一起学习 尽管利用高斯逼近能有效解决许多滤波问题,但当滤波分布为多模型或某些状 ...

  2. java元类_元类 - 一心不乱 - 博客园

    我们使用class机制产生的类,然后在通过类产生的对象 而类实际上都是通过type来实现的 首先确定type里需要添加哪些元素 class_name = 'A'   类名 class_base = ( ...

  3. java 透传_透明传输 - javaadu - 博客园

    发送方和接收方数据的长度和内容完全一致,相当于一条无形的传输线. 关于透明传输的问题 透明传输就是在传输过程中,对外界透明,就是说你看不见他是传送网络不管传输的业务如何,我只负责将需要传送的业务传送到 ...

  4. java 分部类_分部类 - Tekkaman - 博客园

    [分部类] 可以将类或结构.接口或方法的定义拆分到两个或多个源文件中.每个源文件包含类型或方法定义的一部分,编译应用程序时将把所有部分组合起来.如: 使用partial的几个要点: 1.所有部分都必须 ...

  5. java 使用webmagic 爬虫框架爬取博客园数据

    java 使用webmagic 爬虫框架爬取博客园数据存入数据库 学习记录   webmagic简介: WebMagic是一个简单灵活的Java爬虫框架.你可以快速开发出一个高效.易维护的爬虫. ht ...

  6. 随机数是骗人的,.Net、Java、C为我作证 - 杨中科 - 博客园

    移动端全链路跟踪保障体系 随机数是骗人的,.Net.Java.C为我作证 - 杨中科 - 博客园

  7. java代码画樱花飘落_一行代码引入博客园樱花飘落特效

    前言 博客园作为面向大众的博客, 个性新颖可以博得一赞, 简约美观也不失阅读体验, 本文对樱花特效js进行了解读, 发现作者的设计确实秒不可言, 即使没有注释, 思路展示的也很清晰. 那就废话不多说, ...

  8. 限制会话id服务端不共享_会话控制 - able-woman - 博客园

    会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段.而会话,就是用户通过浏览器和服务器的一次通话. 为什么要有会话控制? 因为HTTP协议是无状态的,服务器不知道用户上一次做 ...

  9. JAVA爬虫实践(实践二:博客园)

    分析博客园网站的请求可以发现,博客园的分页请求为POST方式,和知乎的滚动加载类似. 不同的是请求响应返回的是HTML而不是JSON. 这样可以套用上一篇爬知乎的代码,需要修改的部分就是POST方法传 ...

  10. Java实现 第三方的验证码发送问题--博客园老牛大讲堂

    简要:本篇文章,主要介绍怎样利用第三方平台实现短信验证码的发送问题.--博客园老牛大讲堂 1.Java发送(验证码,短信)原理--博客园老牛大讲堂 1.首先用户选定一个第三方平台. 2.进行一系列操作 ...

最新文章

  1. linux软件包管理-rpm
  2. java自定义字段_自定义字段的设计与实现(Java实用版)
  3. loadrunner简单的例子(demo)
  4. 本地数据库与mysql同步软件下载_SyncNavigator数据库同步软件
  5. android studio gradle 学习,学习Android Studio里的Gradle
  6. “中兴捧月”报文监视器的实现
  7. Zabbix(七)zabbix proxy 分布式监控配置
  8. 《电子基础与维修工具核心教程》——第2章 电阻2.1 电阻器介绍
  9. IT 技能发展:10 大基本 IT 技能(精通一半你就是人才)
  10. 房屋出租系统(Java实现-命令行练习版)
  11. mysql经纬度 微信_微信获取用户的经纬度
  12. goahead源码分析webs.c
  13. 华为外包员工是什么样的群体?
  14. 谱聚类算法入门教程(三)—— 求f^TLf的最小值
  15. canvas全局合成画月牙_画房子一日营 | 园林设计写生系列课程
  16. 中国古代四大名著电子书(android)
  17. 一文读懂对抗学习!5千字精炼提干
  18. php 启动php-fpm,linux启动多个php-fpm
  19. 转换 wav,ape,flac 音乐为 mp3,m4a(mp4) 格式
  20. UX术语详解:任务流,用户流,流程图以及其它全新术语

热门文章

  1. 台式计算机日历表,Windows台式电脑怎么设置添加桌面日历透明便签?
  2. vue-html5-editor接收数据,在vue中获取wangeditor的html和text的操作
  3. python lambda函数两个列表大小关系_python lambda结合列表推导式?
  4. OpenCV精进之路(十):直方图匹配——模板匹配
  5. VS错误之error LNK2019: 无法解析的外部符号
  6. C函数调用过程原理及函数栈帧分析
  7. 图像处理基础(四)_图像分辨率、图像模式及通道讲解
  8. android 水印背景功能,Android 给View添加剧复的文字水印背景 相似钉钉通信录的背景效果...
  9. CS0579 Duplicate 'Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute
  10. 2019-06-13-vim配色步骤