进制
-
二进制 和 十进制 相互转换
-
十进制 和 十六进制 相互转换
原码,反码,补码
原码、反码、补码:
在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 进行的.
注意: 正数 的原码, 反码, 补码都行相同. 负数稍微复杂
原码:
就是二进制定点表示,最高位为符号位,”0”表示正,”1”表示负.
反码:
负数的反码是对其原码逐位取反,但符号位除外( 符号位 就是 最高位 ).
补码:
负数的补码是在其反码的末尾 加 1.
注意:
求反码的时候, 最高位是符号位不能改变
正数的符号位 是 0
负数的符号位 是 1
正数 5:
5的二进制数: 00000101
原码,补码,反码: 00000101
负数 -5;
5的二进制数: 00000101
原码: 10000101
反码: 111111010
补码: 111111011
移位操作
移位操作:
<<: 将操作数的二进制码整体左移指定位数, 左移之后的空 用 “0” 来补充
>>: 将操作数的二进制码整体右移指定位数, 右移之后的空 用 “符号位” 来补充
若是 正数 使用 “0” 补充
若是 负数 使用 ”1” 补充
/* * 2的二进制: * 00000000_00000000_00000000_00000010 * 左移3位: * 00000_00000000_00000000_00000010000 //转十进制: 0 * 2^0 + ...+ 1 * 2^4 = 16 * 右移3位 * 00000000_00000000_00000000_00000010 //转十进制: 1 * 2^1 = 2 */System.out.println(2 << 3); // 16
System.out.println(16 >> 3); // 2
/* * - 16 二进制数 最高位用 1 来补充(负数最高位 用 1) * 原码: 10000_00000000_00000000_00000010000 * 反码: 11111_11111111_11111111_11111101111 //负数的反码 最高位 不变 * 补码: 11111_11111111_11111111_11111110000 //负数的补码 是在其反码的末尾加 1 * 右移3位(在补码的基础上 右移3位. 右移之后的空 用 “符号位” 来补充.) * 11111111_11111111_11111111_11111110 */
System.out.println(-16 >> 3); // -2
今天的文章Java 一一 进制、原码 反码 补码、移位操作分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/22829.html