美文网首页
Linux Shell 有符号和无符号数互转

Linux Shell 有符号和无符号数互转

作者: 云石畅想 | 来源:发表于2019-07-09 21:12 被阅读0次

工作中经常会遇到有符号到无符号的转化,写个c程序没必要,就用shell几行就好,int64和unsigned int64之间的:

signed_to_unsigned()
{
  local hex=$(printf "0x%x" $(( $* )))
  local unsigned=$(printf "%u" $hex )
  echo $unsigned
}

unsigned_to_signed()
{
  echo $(( $* ))
}



a=-1000
echo "a:" $a ", unsigned value:" `signed_to_unsigned $a`

b=18446744073709550616
echo "b:" $b ", signed value:" `unsigned_to_signed $b`

输出结果:

$ sh unsigned_to_signed.sh  
a: -1000 , unsigned value: 18446744073709550616
b: 18446744073709550616 , signed value: -1000

转载请注明来自KyAn0: KyAn0的博客

相关文章

  • Linux Shell 有符号和无符号数互转

    工作中经常会遇到有符号到无符号的转化,写个c程序没必要,就用shell几行就好,int64和unsigned in...

  • 2_有符号和无符号

    关键词:计算机中的符号位、有符号数的表示法、无符号数的表示法、signed和unsigned、无符号数和有符号数的...

  • 有符号数和无符号数

    在计算机中,若一个数代表有符号数,则一个n位数的最高位代表正数或负数,其余位取反加1。比如1000_0000,则除...

  • 有符号数和无符号数

    1.无符号数是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值,表示非负数。 ...

  • 有符号数和无符号数

    在计算机中,若一个数代表有符号数,则一个n位数的最高位代表正数或负数,其余位取反加1,比如1000_0000,则除...

  • Cpp:位操作符

    位操作符:位操作符操作的整数可以是有符号或无符号数。 下面的例子,假设unsigned char有8位: ~: 类...

  • 失误集锦

    2020.10.16 问题描述: 使用了一个无符号数,这个无符号数是两个数相减得到的。而已有代码相减时没有考虑无符...

  • 1.4数据宽度

    计算机对数据的处理是有大小限制的。 本节必须掌握的知识点: 1、数据宽度 2、理解有符号数、无符号数 3、进制的符...

  • 有符号数与无符号数

    最直观的区别:有符号数的第一位表示正负,无符号数的所有位都用来表示数字大小(且全部是正数)。 计算机中的数字都是用...

  • 计算机的编码

    计算机中的数据表示 计算机中数字的表示有 无符号数和有符号数 有符号数 数字的表示中使用一位表示符号的正负,比如...

网友评论

      本文标题:Linux Shell 有符号和无符号数互转

      本文链接:https://www.haomeiwen.com/subject/nbzfkctx.html