随笔 - 807  文章 - 0 评论 - 43 阅读 - 57万

随笔分类 -  位操作

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

点击右上角即可分享
微信分享提示