crash —— 自带的计算器和转换器

简介: crash —— 自带的计算器和转换器

crash提供了eval命令,实现了一些很好用的功能,下面学习一下。

格式:

eval [-b][-l] (表达式) | 值

支持的运算符:+ - & | ^ * % / << >>

下面是需要注意的:

  1. 括号并不是必须的,但是如果使用了|<<或者>>,那么需要使用括号
crash> eval (1 << 32)
hexadecimal: 100000000  (4GB)
decimal: 4294967296
octal: 40000000000
binary: 0000000000000000000000000000000100000000000000000000000000000000
  1. 传给eval的值可以是数字(10进制或者16进制),也可以符号,比如如果传入函数名或者全局变量名,返回函数或者全局变量的地址。
crash> eval panic_on_oops
hexadecimal: ffffffff844c3dc4
    decimal: 18446744071634173380  (-2075378236)
      octal: 1777777777760423036704
     binary: 1111111111111111111111111111111110000100010011000011110111000100
crash>
crash> rd panic_on_oops
ffffffff844c3dc4:  0000000000000001                    ........
  1. 如果传给eval的值是16进制,0x并不是必须的,比如有a~f
crash> eval 10
hexadecimal: a
    decimal: 10
      octal: 12
     binary: 0000000000000000000000000000000000000000000000000000000000001010
crash> eval 0x10
hexadecimal: 10
    decimal: 16
      octal: 20
     binary: 0000000000000000000000000000000000000000000000000000000000010000
crash> eval 1a
hexadecimal: 1a
    decimal: 26
      octal: 32
     binary: 0000000000000000000000000000000000000000000000000000000000011010
crash> eval 0x1a
hexadecimal: 1a
    decimal: 26
      octal: 32
     binary: 0000000000000000000000000000000000000000000000000000000000011010
  1. 数字后面可以跟K/k M/m G/g,这里1K表示1024,1M表示10241024,1G表示10241024*1024
crash> eval 1k
hexadecimal: 400  (1KB)
    decimal: 1024
      octal: 2000
     binary: 0000000000000000000000000000000000000000000000000000010000000000
crash> eval 8*2k
hexadecimal: 4000  (16KB)
    decimal: 16384
      octal: 40000
     binary: 0000000000000000000000000000000000000000000000000100000000000000
crash> eval 0x10m
hexadecimal: 1000000  (16MB)
    decimal: 16777216
      octal: 100000000
     binary: 0000000000000000000000000000000000000001000000000000000000000000
crash> eval 1k*1k
hexadecimal: 100000  (1MB)
    decimal: 1048576
      octal: 4000000
     binary: 0000000000000000000000000000000000000000000100000000000000000000
crash> eval 1k*1G
hexadecimal: 10000000000  (1024GB)
    decimal: 1099511627776
      octal: 20000000000000
     binary: 0000000000000000000000010000000000000000000000000000000000000000
  1. 可以在数字前面使用~表示取反
crash> eval ~2
hexadecimal: fffffffffffffffd
    decimal: 18446744073709551613  (-3)
      octal: 1777777777777777777775
     binary: 1111111111111111111111111111111111111111111111111111111111111101
crash> eval ~a
hexadecimal: fffffffffffffff5
    decimal: 18446744073709551605  (-11)
      octal: 1777777777777777777765
     binary: 1111111111111111111111111111111111111111111111111111111111110101
  1. 查看负数的表示
crash> eval -1
hexadecimal: ffffffffffffffff
    decimal: 18446744073709551615  (-1)
      octal: 1777777777777777777777
     binary: 1111111111111111111111111111111111111111111111111111111111111111
crash> eval -a
hexadecimal: fffffffffffffff6
    decimal: 18446744073709551606  (-10)
      octal: 1777777777777777777766
     binary: 1111111111111111111111111111111111111111111111111111111111110110
  1. 如果需要按64位计算,那么可以在数字前面使用-l参数。但是如果本身传入数字就是64位的,那么就不用传-l如果是在64系统上,都是按64位计算,不需要传-l
  2. 有时我们想知道一个数字的那些位是1,那么需要在数字前面使用-b参数
crash> eval -b 0x5
hexadecimal: 5
    decimal: 5
      octal: 5
     binary: 0000000000000000000000000000000000000000000000000000000000000101
   bits set: 2 0
crash> eval -b 0xa5
hexadecimal: a5
    decimal: 165
      octal: 245
     binary: 0000000000000000000000000000000000000000000000000000000010100101
   bits set: 7 5 2 0
crash> eval -b  -1
hexadecimal: ffffffffffffffff
    decimal: 18446744073709551615  (-1)
      octal: 1777777777777777777777
     binary: 1111111111111111111111111111111111111111111111111111111111111111
   bits set: 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42
             41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20
             19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
相关文章
|
API 容器 Kubernetes
当 K8s 集群达到万级规模,阿里巴巴如何解决系统各组件性能问题?
作者 | 阿里云容器平台高级技术专家 曾凡松(逐灵) 本文主要介绍阿里巴巴在大规模生产环境中落地 Kubernetes 的过程中,在集群规模上遇到的典型问题以及对应的解决方案,内容包含对 etcd、kube-apiserver、kube-controller 的若干性能及稳定性增强,这些关键的增强是阿里巴巴内部上万节点的 Kubernetes 集群能够平稳支撑 2019 年天猫 618 大促的关键所在。
|
Linux 网络安全
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
|
JSON 数据可视化 数据挖掘
Ruby 数据处理与分析竟如此强大!不看后悔一辈子,快来开启数据探索之旅!
【8月更文挑战第31天】在数据驱动时代,高效处理与分析数据至关重要。作为灵活强大的编程语言,Ruby 提供了丰富的工具和方法,涵盖数据读取、清洗、分析及可视化等多个环节。借助 CSV 和 JSON 库,可轻松处理常见文件格式;利用正则表达式清洗数据;通过 NMatrix 和 Statsample 库完成复杂的数据分析任务;使用 Gruff 库将分析结果可视化。同时,合理优化代码性能,如采用高效的数据结构和算法,能进一步提升数据处理效率。遵循这些最佳实践,Ruby 将成为你数据处理与分析的强大助手。
156 0
|
11月前
|
关系型数据库 数据挖掘 数据库
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
解析数据库联结:应用与实践中的 INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOIN 与 CROSS JOIN
244 2
|
安全 Java 数据安全/隐私保护
APP加固技术及其应用
在移动应用开发过程中,APP加固技术起到了非常重要的作用。APP加固是将apk文件进行混淆加密,以防止别人反编译获取我们的源码和资源文件。目前市场上主流的APP加固公司有三家,分别是梆梆加固、360加固和ipagurd加固。本文将介绍APP加固的概念、加固方案和比较,并探讨APP加固在实际开发中的应用。
|
缓存 关系型数据库 MySQL
如何优化MySQL 8.0的性能?
【6月更文挑战第14天】如何优化MySQL 8.0的性能?
1643 5
|
关系型数据库 MySQL Apache
Discuz贴吧建站的搭建及维护(windows系统)
Discuz贴吧建站的搭建及维护(windows系统)
356 0
|
前端开发 Java 关系型数据库
使用SSM实现网上购物商城系统
本项目基于SSM框架( spring+springmvc+mybatis)进行开发实现,数据库采用MYSQL,开发工具为IDEA或ECLIPSE均可。系统包含商城前端功能和后端管理功能,前端主要实现了用户注册、登陆、商品查看、添加购物车、生成订单、模拟支付等功能。后台管理功能主要包含用户管理、产品类型管理、产品管理、订单管理、销量统计等功能。功能完整,运行无误,适合做毕业设计或课程设计使用。
638 0
使用SSM实现网上购物商城系统
|
数据库连接 开发者 Python
深度解析Python关键字:掌握核心语法的基石
Python关键字是一些预定义的标识符,是编程语言内建的具有特殊含义的保留字,它们在语法结构、逻辑控制、错误处理等方面执行特定的操作。Python3.12中共有35+4个关键字,作为构成python语言语法结构的核心元素,不可用作变量名、类名或函数名等。理解并熟练运用这些关键字对于编写高质量、易于理解和维护的代码至关重要。
808 2
设置selenium默认下载位置
设置selenium默认下载位置
479 1

热门文章

最新文章