shell 基本计算、逻辑运算、位运算详解

SNN系列|编码篇(2)时序编码 Tempotral Coding 选择编码方法是要根据编码对象以及模型如何处理编码信息进行选择,如下是一种时序信息的编码对比: Threshold-based encoding 又称为tempotral contrast,该方法可以用于编解码一段序列,当差值超过阈值时发放脉冲,阈值是根据编码的序列自适应变化的。 使用该编码方法时,实值序列最好是沿时间变化的,因为在根据差分决定是否发放脉冲后,脉冲的顺序与差分顺序有关。 Time-to-first spike coding 该编码方法将信息用神经元首次 阅读详情

以下面的格式提供运算表达式:$(( expression ))

$ echo $((5*(3+3)))
30
$ result = $(($myvar-10))

shell提供方便的数之间的进制转换:
$ echo $((013))#八进制
$ echo $((0xA4))#十六进制

还可以使用以下格式指定 2 到 64 之间的任意进制:
$((BASE#NUMBER))
echo $((8#377))
echo $((16#D8))

在 Shell 中进行进制转换的另一个诀窍是使用 bc, 它是一种任意精度运算语言,大多数 UNIX 安装程序都提供。因为它允许您指定输出进制,所以当您需要以十进制以外的进制输出时,这是一种很好的技术。
bc 的特殊变量 ibase 和 obase 分别包含用于输入和输出的进制的值。缺省情况下,都被设置为 10。要执行进制转换,需要改变其中的一个或两个值,然后提供一个数字。
 

复制代码 代码如下:


$ echo 'obase=16; 47' | bc
2F
$ echo 'obase=10; ibase=16; A03' | bc
2563



了解了这些基本特性,下边再看看逻辑运算符和逻辑表达式,基本的 + – * / % 不再赘述。

一、逻辑运算符
 

逻辑卷标表示意思
1.关于档案与目录的侦测逻辑卷标!
-f常用!侦测『档案』是否存在 eg: if [ -f filename ]
-d常用!侦测『目录』是否存在
-b侦测是否为一个『 block 档案』
-c侦测是否为一个『 character 档案』
-S侦测是否为一个『 socket 标签档案』
-L侦测是否为一个『 symbolic link 的档案』
-e侦测『某个东西』是否存在!
2.关于程序的逻辑卷标!
-G侦测是否由 GID 所执行的程序所拥有
-O侦测是否由 UID 所执行的程序所拥有
-p侦测是否为程序间传送信息的 name pipe 或是 FIFO (老实说,这个不太懂!)
3.关于档案的属性侦测!
-r侦测是否为可读的属性
-w侦测是否为可以写入的属性
-x侦测是否为可执行的属性
-s侦测是否为『非空白档案』
-u侦测是否具有『 SUID 』的属性
-g侦测是否具有『 SGID 』的属性
-k侦测是否具有『 sticky bit 』的属性
4.两个档案之间的判断与比较 ;例如[ test file1 -nt file2 ]
-nt第一个档案比第二个档案新
-ot第一个档案比第二个档案旧
-ef第一个档案与第二个档案为同一个档案( link 之类的档案)
5.逻辑的『和(and)』『或(or)』
&&逻辑的 AND 的意思
||逻辑的 OR 的意思
运算符号代表意义
=等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
!=不等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串
<小于 应用于:整型比较 在[] 中,不能使用 表示字符串
>大于 应用于:整型比较 在[] 中,不能使用 表示字符串
-eq等于 应用于:整型比较
-ne不等于 应用于:整型比较
-lt小于 应用于:整型比较
-gt大于 应用于:整型比较
-le小于或等于 应用于:整型比较
-ge大于或等于 应用于:整型比较
-a双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o单方成立(or) 逻辑表达式 –o 逻辑表达式
-z空字符串
-n非空字符串


二、逻辑表达式

test 命令

使用方法:test EXPRESSION
如:
[root@localhost ~]# test 1 = 1 && echo ‘ok'
ok
[root@localhost ~]# test -d /etc/ && echo ‘ok'
ok
[root@localhost ~]# test 1 -eq 1 && echo ‘ok'
ok
[root@localhost ~]# if test 1 = 1 ; then echo ‘ok'; fi
ok

注意:所有字符 与逻辑运算符直接用“空格”分开,不能连到一起。

精简表达式

[] 表达式
[root@localhost ~]# [ 1 -eq 1 ] && echo ‘ok'
ok
[root@localhost ~]# [ 2 < 1 ] && echo ‘ok'
-bash: 2: No such file or directory
[root@localhost ~]# [ 2 \< 1 ] && echo ‘ok'
[root@localhost ~]# [ 2 -gt 1 -a 3 -lt 4 ] && echo ‘ok'
ok
[root@localhost ~]# [ 2 -gt 1 && 3 -lt 4 ] && echo ‘ok'
-bash: [: missing `]‘
注意:在[] 表达式中,常见的>,<需要加转义字符,表示字符串大小比较,以acill码 位置作为比较。 不直接支持<>运算符,还有逻辑运算符|| && 它需要用-a[and] –o[or]表示
[[]] 表达式
[root@localhost ~]# [ 1 -eq 1 ] && echo ‘ok'
ok[root@localhost ~]$ [[ 2 < 3 ]] && echo ‘ok'
ok
[root@localhost ~]$ [[ 2 < 3 && 4 > 5 ]] && echo ‘ok'
ok

注意:[[]] 运算符只是[]运算符的扩充。能够支持<,>符号运算不需要转义符,它还是以字符串比较大小。里面支持逻辑运算符:|| &&

三、性能比较

bash的条件表达式中有三个几乎等效的符号和命令:test,[]和[[]]。通常,大家习惯用if [];then这样的形式。而[[]]的出现,根据ABS所说,是为了兼容><之类的运算符。以下是比较它们性能,发现[[]]是最快的。

$ time (for m in {1..100000}; do test -d .;done;)
real 0m0.658s
user 0m0.558s
sys 0m0.100s

$ time (for m in {1..100000}; do [ -d . ];done;)
real 0m0.609s
user 0m0.524s
sys 0m0.085s

$ time (for m in {1..100000}; do [[ -d . ]];done;)
real 0m0.311s
user 0m0.275s
sys 0m0.036s

不考虑对低版本bash和对sh的兼容的情况下,用[[]]是兼容性强,而且性能比较快,在做条件运算时候,可以使用该运算符。

四、按位操作运算符
 

运算符名称举例解释value的值
<<左移value=4>>24左移2位,value值为16
>>右移value=8<<28右移2位,value值为2
&按位与value=8&&48按位与4,value值为0
|按位或value=8|48按位或4,value值为12
~按位非value=~8按位非8,value值为-9
^按位异或value=10^310按位异或3,value值为9


注: 对于按位非,若求“~a”则结果为-(a+1)举一个详细例子:求“~8”分析由于计算机通常
用补码进行符号运算,[[x]补]补=[x]所以
则8的二进制为00001000 求非为11110111
求反码为1001000求补码为1001001所以最后的结果为1001001,~8 即为-9。

IEEE LaTeX模板中algorithm排版避坑指南:如何优雅地嵌入算法描述? 本文详细解析了在IEEE LaTeX模板中优雅排版algorithm的实用技巧,包括基础配置、高级自定义及常见问题解决方案。通过嵌套环境与[H]参数的应用,帮助研究者克服IEEEtran模板对算法排版的限制,实现专业且美观的算法呈现。 阅读详情

相关推荐

为什么你的SSE连接总断?深入对比EventSource与fetch-event-source的5大差异点

本文深入对比了原生EventSource与@microsoft/fetch-event-source库在SSE连接稳定性上的五大关键差异。重点剖析了后者在请求能力、连接控制、错误处理、数据解析及性能优化方面的优势,特别是其支持POST请求、自定义Header、精细化的重连策略与生命周期管理,为解决生产环境中SSE连接频繁断开的问题提供了专业方案。

weixin_28077113的博客 494

shell基本计算、逻辑运算、位运算详解

http://blog.pureisle.net/archives/1352.html Shell 提供大量的基本运算操作,在脚本中非常有用。Shell 对您提供的算术表达式求值,执行运算展开式,此时使用得出的结果替换表达式。以下面的格式提供运算表达式:$(( expression )) $ echo $((5*(3+3))) 30 $ result = $(($myvar-1

hepeng597的专栏 2241

概述DeepLab系列(deeplab v1, deeplab v2, deeplab v3, deeplab v3+)

前言:图像分割是指像素级别的图像识别,即标注出图像中每个像素所属的对象类别。 语义分割更注重类别之间的区分,而实例分割更注重个体之间的区别。 DeepLab是由Google团队提出的一系列图像分割算法。 DeepLab v1 (2014年) Paper (ICLR 2015) Code 创新点: 空洞卷积(Atrous Conv); <解决编码过程中信号不断被下采样,细节丢失的问题> 全连接条件随机场(Fully-connected Conditional Random Field)。

ZSH12345678900的博客 5528

shell编程之位运算符

位运算符

鸡排小农的博客 4248

ArcGIS中的Python入门知识点整理

关于Arcpy大家应该都比较熟悉,Python用的好,数据处理快又好!在ArcGIS中ArcPy是一个以成功的arcgisscripting模块为基础并继承了arcgisscripting功能进而构建而成的站点包。目的是为以实用高效的方式通过Python执行地理数据分析、数据转换、数据管理和地图自动化创建基础。ArcPy提供了丰富纯正的Python体验,具有代码自动完成功能。今天我们就看看关于Arcpy相关处理的使用,通过一些简单代码与大家一起认识Arcpy。

xjt921122的博客 1771

【学习记录】IIC驱动ICM42670+卡尔曼滤波+四元数姿态角解算

ICM42670陀螺仪可以使用iic驱动,单片机平台使用GD32f305VE。

liarsup的博客 8267

第八篇 shell位运算,左移,右移,与运算,进制转换

每天进步一点点~加油~ 8位运算: 程序中的所有数都是以二进制的形式存在的,位运算就是直接对整数在内存中的二进制数进行位的操作运算,二进制从右往左,0为开始位。 含义 运算符 实例 与运算(同时为1取1) & 1010 & 1001=1000 或运算(有一位为1取1) | 1010 & 1001=1011 左移(右边补位整体左移) << ...

爱跳水的温文尔雅的laughing 1万+

Linux kernel crypto的介绍和代码导读

在Linux kernel的module_init阶段会将algif_type_skcipher、algif_type_aead、algif_type_hash、algif_type_rng 四种算法注册.在userspace通过netlink调用了,kernel种的af_alg模块收到消息后, 根据上层传来的算法种类名字来选择走哪一个结构体(alg_type_xxx)的ops函数。也就是添加到af_alg维护的alg_types链表种. alg_types链表种仅有这四个数据.

baron-周贺贺-代码改变世界ctw 321

shell 算术展开、按位运算

shell 通过对一个算术表达式求值并替换结果来执行算术扩展。表达式可以像在双引号中一样来进行处理,并且可以嵌套。 求值算术表达式有以下两种格式: # $[ expression ] # $(( expression )) 在某些场景特别方便,可以免去写程序的烦琐,如验证某些运算。 下面是验证《深入理解计算系统》练习题2.12的场景 表达式 ~0 将生成一个全1的掩码,不管机器的字大小是多少,可移植。 $ printf "%x\n" $(( ~0 )) ffffffffffffffff $ printf.

weixin_42109053的博客 676

基于转录逆转的药物重定向 GPS 模型

GPS是一个基于分子结构预测基因表达扰动的开源平台,由三个模块组成:RCL(在LINCS扰动数据上训练抗噪MLP)、GPS4Drugs(预测新化合物的基因表达谱并进行逆转评分)、MolSearch(基于MCTS的分子优化)。平台使用Morgan指纹和Gene Ontology注释作为特征输入,将基因表达扰动离散为三分类标签。训练数据来自LINCS Phase I的18,746个化合物和978个landmark基因,支持四细胞系独立训练,可用于药物重定向与化合物筛选。

听雨草堂 83

iStoreOS等软路由插件卸载的残留?分享一款软路由高级卸载工具,自定义卸载,轻松解决卸载残留问题

iStoreOS用户看过来!👀 还在被插件包残留困扰吗?本文分享一款“高级卸载”的插件,助你深度清理iStoreOS系统,彻底解决软件卸载不净的痛点,告别频繁恢复出厂设置的烦恼!🚀

XiaoqiangClub的博客 1543

shell运算

第一种写法 $(( )) 第二种写法 $ [] 第三种写法 expr     注意:在expr表达式中,必须添加空格 如果:expr3+5 则报错 如果:expr 3+5   则直接输出3+5 注意:因为expr本身是一个shell命令,所以在输出的时候需要使用反引号(~,1,2,键的左边) 注:expr 表达式只能接受数值 1.算术运算 echo $((

旧时明月 757

智能车图像处理20-进阶篇12--正入十字补线1

这篇文章主要讲述基本的正入十字补线方法。

taiyuezyh的博客 6941

shell编程之逻辑运算

前言:逻辑运算是shell编程的基础,以后的判断语句,循环语句都将用到逻辑运算,熟练掌握逻辑运算是学好shell编程和其他编程的基础。1.逻辑运算的基础由于计算机只认识1和0两个状态,因此将各种结果分为两种情况,TRUE(真)和FALSE(假),可以用1和0表示也可用0和1表示。本博客使用1表示真,0表示假进行说明2.逻辑运算的运算公式&&(与)运算 1 && 1 = 1 1 && 0 = 0

伴读小书童 1117

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

一起学Bash脚本:进制、位运算、逻辑运算

使用“进制+#+数字”来表示特殊进制: [~]$ echo $((16#FF)) 255 [~]$ echo $((2#11)) 3 [~]$ echo $((8#11)) 9 也可以使用0或0x表示八进制或十六进制数: [~]$ echo $((011)) 9 [~]$ echo $((0x11)) 17 支持以下位运算: <<:位左移运算,把一个数字的所有位向左移动指定的位。 [~]$ echo $((16<<2)) 64 >>:位右移运算.

『程序员·小李』的博客 1255

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

shell算术和逻辑运算

$(( expression )) 注意前面有$,另外是双括号,缺一不可 test=$((5&7))shell基本计算、逻辑运算、位运算详解 http://blog.chinaunix.net/uid-24404943-id-3919964.html

shipinsky的博客 293

Linux Shell 脚本编程基础知识篇—shell 运算命令详解

各位好,我是练小杰,本文继续Linux shell脚本编程的基础知识内容,接着讲算术运算命令的详细操作,主要是led命令,read命令,be命令,expr命令等。

weixin_55767624的博客 1738

Shell学习 - 2.22 Shell数学计算(算术运算,加减乘除运算)

从上面的运算结果可以看出,默认情况下,Shell 不会直接进行算术运算,而是把+两边的数据(数值或者变量)当做字符串,把+当做字符串连接符,最终的结果是把两个字符串拼接在一起形成一个新的字符串。如果要执行算术运算(数学计算),就离不开各种运算符号,和其他编程语言类似,Shell 也有很多算术运算符,下面就给大家介绍一下常见的 Shell 算术运算符,如下表所示。这是因为,在 Bash Shell 中,如果不特别指明,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。

guoqx的专栏 1870

shell脚本学习(五)——shell中的数学计算

1 运算符号 如果要执行数学运算,那就肯定有各种运算符号,shell中也有许多运算符。 运算符 说明 +、- 加法、减法(或负号) *、/、% 乘法、除法、取余 ** 幂运算 ++、– – 自增、自减(可以放在变量的前面或后面) ++、– – 自增、自减(可以放在变量的前面或后面) !、&&、| | 逻辑非(取反)、与(and)、或(or) ...

bdkl9998的博客 695

【Shell 脚本速成】05、Shell 运算详解

Shell 运算详解!!!

GG Bond 的博客 3047

Shell脚本入门 04:算术与逻辑运算

文章目录目的基础铺垫操作符/命令运算符if else 语句常用操作符/命令使用(())bctest 和 [ ][[ ]]总结 目的 基础铺垫 操作符/命令 在Shell中如果要对变量等进行运算很多时候都需要有相应的操作符或者命令支持下才能进行,下面是一些常用的操作符及命令,其中加粗部分更加常用些,下面文章中也将以加粗部分进行介绍: 操作符/命令 说明 (( )) 用于整数运算 let 用于整数运算 $[] 用于整数运算 declare -i 将变量设置为整数类型,这样就就可以直接

Naisu的各种笔记 3213

【Shell 编程指南】shell运算操作符之(())

在 (( )) 中,运算符的优先级与大多数编程语言相似。例如,乘法和除法优先于加法和减法。

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 605

Shell if逻辑运算的写法

详情地址: Shell if逻辑运算的写法 | 小步教程现在要表达 a==1 && b==2含义,可用三种方法:方法1:完全test命令或[ ]。逻辑运算符使用test命令的语法: -a、-o。 方法2:完全(( ))数学计算使用常规的逻辑运算符:&&、|| 方法3:test命令结合常规与或分别两个[ ],&&连接它们;&&在[ ]的外部。

小步教程 190
上一篇: 前端工程师的技术进阶点在哪里?
下一篇: hbase shell基础和常用命令详解
程序猿余辉
博客等级 码龄8年 19粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值