进制与编码
进制与编码
叹人间,美中不足今方信
这个作者很懒,什么都没留下…
展开
-
16进制字符串和ascii字符串转换
16进制字符串和ascii字符串转换。原创 2023-04-27 11:37:18 · 542 阅读 · 0 评论 -
Java各种数据类型序列化
对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化。可以理解为序列化是将数据转换成byte[]的表示方式。对象序列化:首先要实现Serializable接口使用ObjectOutputStream序列化,返回byte[],使用ObjectInputStream反序列化byte[]为对象fast...原创 2019-10-18 15:19:41 · 2950 阅读 · 0 评论 -
设备数据包解析带小数的字节流
设备协议的燃气价格是4字节,2字节整数,2字节小数,低位在前,它的16进制数据如何表示?以数据2.06为例,说明下如何转16进制数据、如何解析16进制数据。原创 2023-03-16 11:17:39 · 516 阅读 · 0 评论 -
java有符号和无符号右移
在这个例子中,c是一个正数(其二进制表示的最高位是0),将c进行无符号右移操作时,高位会被填充为0,得到的结果是一个正数,其二进制表示的最高位仍然是0。在这个例子中,a是一个负数(其二进制表示的最高位是1),将a进行无符号右移操作时,高位会被填充为0,得到的结果是一个正数,其二进制表示的最高位是0。在这个例子中,c是一个正数(其二进制表示的最高位是0),将c向右移动2位时,高位会被填充为0,得到的结果是一个正数,其二进制表示的最高位仍然是0。原创 2023-03-13 09:37:23 · 1306 阅读 · 0 评论 -
Java位运算及用途
&:与,且性质:两个位都是1时,结果是1,否则为0用途:清零:任意整数和整数0做与运算,所有位都是0,得出的结果是0取出指定位:任意位和位1做与运算,结果是不变,例如x=10101110取出低4位,只需要和y=00001111做与运算,就可以得出z=00001110判断奇偶:a&1 == 0等价于a % 2 == 0,二进制中,能表示基数,那么二进制的最后一位一定是1。将最后一位变为0:num & (num - 1)会将num的二进制表示的最后一位的1变成0判断一个数原创 2020-11-08 15:25:52 · 835 阅读 · 0 评论 -
Java无符号数
要将其转换为无符号 long 类型,可以使用按位与运算符和0xFFFFFFFF掩码,这将截断有符号数的符号位并将其转换为无符号数。要将其转换为无符号 int 类型,可以使用按位与运算符和0xFFFF掩码,这将截断有符号数的符号位并将其转换为无符号数。可以看出,short类型是2个字节,转无符号数时,&操作的也是2个字节的&FFFF,返回是4字节的int类型;int类型是4个字节,转无符号数时,&操作的也是4个字节的&FFFFFFFF,返回是8字节的long类型;原创 2023-02-16 14:25:41 · 5004 阅读 · 0 评论 -
Java的大端小端字节序
在进行网络传输时,需要进行字节序转换,将大端字节序转换成小端字节序,或将小端字节序转换成大端字节序。在计算机中,内存地址通常是按照地址递增的方式分配的,也就是说,低地址是指内存的起始位置,高地址是指内存的末尾位置。小端字节序:在小端字节序中,一个多字节数据的低位字节存储在低地址处,而高位字节存储在高地址处。也就是说,字节的排列顺序是从左到右,低位字节在前,高位字节在后。大端字节序:在大端字节序中,一个多字节数据的高位字节存储在低地址处,而低位字节存储在高地址处。这两个概念的区别在于字节存储的顺序。原创 2023-02-16 14:21:16 · 2081 阅读 · 1 评论 -
有符号二进制加减法
为了解决原码减法出现的问题,出现了反码计算减法,虽然反码的结果是正确的,但问题出现在“0”这个特殊值,例如 1-1=[0000 00001]反 + [1111 1110]反 = [1000 0000]原 = -0。使用二进制原码进行加法是OK的,但是原码在做减法运算时,要比较两个数的绝对值,判断最终的符号,以绝对值大的数 减去 绝对值小的数,最终得到结果,过程太复杂。虽然+0和-0是一样的,但带符号的0是没有意义的,而且会出现[0000 0000]原和[1000 0000]原 两个编码表示0。原创 2023-01-09 15:00:15 · 6472 阅读 · 5 评论 -
进制转换随手记
3位2进制可以表示1位8进制数,因为000~111=0~7,当一个8进制数转2进制时,只需要把每一位8进制数转成三位2进制数即可,即三位2进制数为1组;16进制,F+1=1111+0001=10000,每4位看成1位16进制数,那么10000=0001 0000=10,10中的高位表示16的1次幂。8进制,7+1=111+001=1000,每3位看成1位8进制数,那么1000=001 000=10,10中的高位表示8的1次幂。4位2进制可以表示1位16进制数,因为0000~1111=0~F。原创 2022-09-17 14:39:40 · 507 阅读 · 0 评论