各种进制工具类
撰写时间:2025-01-30
修订时间:2025-02-06
本页为本站所编制的处理不同进制的工具类的测试。
目前实现了BinUtils.js,主要用以处理二进制及十六进制。
二进制工具
getBinStr
基本用法
getBinStr用于获取特定数值的二进制字符串。
第2个参数用以指定每隔多少位分开显示,默认为8位。
所显示的位数,根据数值的大小,自动按8位、16位、32位、64位、128位的顺序予以对齐。
负数的二进制表示
对于一个负数的二进制表示,JavaScript是先求出该数绝对值的二进制,然后再在结果前面添加负号-
。
这是JavaScript独创的表示方法。与负数的原码(sign-magnitude), 反码(one's complement)及补码(two's complement)二进制表示法均不相同。
下面是-5的各种规范表示方法:
因此,JavaScript对负数的二进制表示法,实际上是在绝对值的原码前面直接添加负号。这种方法即不规范,并且结果也不能直接表示其最高位的值为1。
但实际上,现代计算机系统均使用补码来表示负数的二进制数。这种表示方法的优点是算法高效、表示唯一,且能多表示一个负数。缺点是当肉眼看到其二进制数值时,很难通过运算得到原来的十进制数值。
当我们查看一个整数的二进制时,使用原码的方式最为直观,最高位表示符号,其余位表示数值。鉴于此,getBinStr采用原码的表达方式。
十六进制工具
getHexStr
显示单个十六进制:
对于十六进制的数值来讲,使用大写字母来表达较为美观。为与表示数值的字母相区分,前缀0x
使用小写字母来表示。
默认情况下,显示0x
前缀。可不显示该前缀,以适用于不同的场合。
指定需对齐显示的位域:
负数的十六进制:
getHexAddrStrFromArray
显示数值数组的内存地址及数值:
如果字符ASCII值位于[32, 126]或[128, 255]的范围内,则予以打印字符;否则,为不可打印字符,以.
来代替。
getHexAddrStrFromTypedArray
显示类型化数组的内存地址及数值:
自动获取是否有符号的信息,再按Uint8Array或Int8Array的视图拆分为字节来显示。