欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

java进制原码_Java 一一 进制、原码 反码 补码、移位操作

发布时间:2024/4/13 java 53 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java进制原码_Java 一一 进制、原码 反码 补码、移位操作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

进制

二进制 和 十进制 相互转换

十进制 和 十六进制 相互转换

原码,反码,补码

原码、反码、补码:

在计算机内, 有符号数有三种表示法: 原码, 反码, 补码. 所有的数据的运算都是采用 补码 进行的.

注意: 正数 的原码, 反码, 补码都行相同. 负数稍微复杂

原码:

就是二进制定点表示,最高位为符号位,”0”表示正,”1”表示负.

反码:

负数的反码是对其原码逐位取反,但符号位除外( 符号位 就是 最高位 ).

补码:

负数的补码是在其反码的末尾 加 1.

注意:

求反码的时候, 最高位是符号位不能改变

正数的符号位 是 0

负数的符号位 是 1

正数 5:

5的二进制数: 00000101

原码,补码,反码: 00000101

负数 -5;

5的二进制数: 00000101

原码: 10000101

反码: 111111010

补码: 111111011

移位操作

移位操作:

<<:>

>>: 将操作数的二进制码整体右移指定位数, 右移之后的空 用 “符号位” 来补充

若是 正数 使用 “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进制原码_Java 一一 进制、原码 反码 补码、移位操作的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。