摘要:
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
阅读(1849)
评论(0)
推荐(0)
摘要:
Java对byte 的 + - * / >> >>> << & | ^ (加,减,乘,除,右移,左移,无符号右移,位与,位或,位异或)操作,均会是首先将byte转化为int, 再行运算。这一事实可能导致多种问题: 假设我们想进行如下byte运算: 1111 1000 右移1位,再与0000 0001 阅读全文
posted @ 2022-01-24 15:13
del88
阅读(243)
评论(0)
推荐(0)
摘要:
1.计算机中的数字都是以补码的形式存在,正数的原码、反码、补码一致(规定),所以通常不会出问题,我们也无需关注。 2.负数的原码、反码、补码不一致(当然除了-0,即-128,1000 0000 这个是强制算-128的,因为不存在-0,而符号位又是1,所以干脆就是当成负数即-128) 由于反码没有什么 阅读全文
posted @ 2022-01-24 14:15
del88
阅读(624)
评论(0)
推荐(0)
摘要:
总结:在java中,对byte和short类型的 右移操作 必须先进行 & 0xff 后再右移,避免byte或short是负数的情况下,导致 右移操作前 自动升为int,前面补了很多1,此时右移会把1冲到高位上,从而错误; int 和 long没有任何问题; 左移没有这个问题,因为左移及时自动转换成 阅读全文
posted @ 2022-01-24 14:14
del88
阅读(550)
评论(0)
推荐(0)
浙公网安备 33010602011771号