java中“0x”表示的含义
摘要:public static void main(String[] args) { int a = 0xff;//16进制默认是int int b = 0x000000ff; System.out.println(a);//255 System.out.println(b);//255 //结论16进
阅读全文
posted @
2022-01-24 16:00
del88
阅读(1789)
推荐(0) 编辑
Java byte位移操作 注意事项
摘要:Java对byte 的 + - * / >> >>> << & | ^ (加,减,乘,除,右移,左移,无符号右移,位与,位或,位异或)操作,均会是首先将byte转化为int, 再行运算。这一事实可能导致多种问题: 假设我们想进行如下byte运算: 1111 1000 右移1位,再与0000 0001
阅读全文
posted @
2022-01-24 15:13
del88
阅读(218)
推荐(0) 编辑
负数原码与补码之间相互转换,牛逼规则
摘要:1.计算机中的数字都是以补码的形式存在,正数的原码、反码、补码一致(规定),所以通常不会出问题,我们也无需关注。 2.负数的原码、反码、补码不一致(当然除了-0,即-128,1000 0000 这个是强制算-128的,因为不存在-0,而符号位又是1,所以干脆就是当成负数即-128) 由于反码没有什么
阅读全文
posted @
2022-01-24 14:15
del88
阅读(441)
推荐(0) 编辑
在Java中,对 byte 和 short 类型 进行位操作的时候,严重留意事项
摘要:总结:在java中,对byte和short类型的 右移操作 必须先进行 & 0xff 后再右移,避免byte或short是负数的情况下,导致 右移操作前 自动升为int,前面补了很多1,此时右移会把1冲到高位上,从而错误; int 和 long没有任何问题; 左移没有这个问题,因为左移及时自动转换成
阅读全文
posted @
2022-01-24 14:14
del88
阅读(509)
推荐(0) 编辑
Java 中,byte 数据类型的取值范围为什么是 -128 - 127 ?其它数值类型 都雷同
摘要:byte 的取值范围:-128 - 127 基本的数学计算方法,一个byte占8位,第一位为符号位,还有7位,7位能表示最大为:2^7 - 1 怎么来的呢:看如下数学计算 1111 111 = 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 我们不用使用加法来算这个值
阅读全文
posted @
2020-05-16 12:02
del88
阅读(669)
推荐(0) 编辑