神亿般的存在
2018-04-07 18:05
0xf为什么是1
0x 是十六进制的前缀表示, f 表示 16进制的 值 15 ,0xf 就是表示十六进制的f, 十六进制即 0123456789abcdef ,小于 f 自然只有一位,所以补0
0xff是指16进制的255 即二进制中的 1111 1111,而不是1。
课程里说的>>>(>>>是无符号右移,左边全部补0)和& 0xff(& 是 按位与操作,如101&001 = 001)的操作是为了取int值的各个部分的8位。
实际上只需要>>>即可,而& 一个0xff实际上得到当前最后的八位的原值(因为与了一个全是1的),同时消除了前面多余的位数。
例如:
0000,0000,0000,0011想要取高八位即(0000,0000),先进行一次>>>8(右移8位,补0)得到
0000,0000,0000,0000(斜的0是新补上去的),然后再用他和0xff,即
1111,1111进行 与 运算,那么就能得到
0000,0000(把斜的0全部去掉了)
文件传输基础——Java IO流
133754 学习 · 1030 问题
相似问题