首页 > 基础资料 博客日记
运算符--原码、反码、补码
2023-12-22 19:46:51基础资料围观235次
本篇文章分享运算符--原码、反码、补码,对你有帮助的话记得收藏一下,看Java资料网收获更多编程知识
运算符--原码、反码、补码
原码:
十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。
利用原码对正数进行计算是不会有问题的。
但如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的。
原码的弊端:
- 利用原码进行计算的时候,如果是正数完全没有问题。
- 但是如果是负数计算,结果就出错,实际运算的方向,跟正确的运算方向是相反的。
反码:
出现的目的:为解决原码不能计算负数的问题而出现的。
计算规则:正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0。
反码的弊端:负数运算的时候,如果结果不跨0,跟实际结果会有1的偏差。
补码:
出现的目的:为了解决负数计算时跨0的问题而出现的。
计算规则:
- 正数的补码不变,负数的补码在反码的基础上+1.
- 另外补码还能多记录一个特殊的值-128,该数据在1个字节下,没有原码和反码。
注意点:计算机中的存储和计算都是以补码的形式进行的。
基本数据类型
数据类型 | 字节 | 二进制 |
---|---|---|
byte类型的10 | 1个字节 | 0000 1010 |
short类型的10 | 2个字节 | 0000 0000 0000 1010 |
int类型的10 | 4个字节 | 0000 0000 0000 0000 0000 0000 0000 1010 |
long类型的10 | 8个字节 | 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010 |
隐式转换
public class Test {
public static void main(String[] args) {
byet a = 10;//0000 1010
int b = a;//0000 0000 0000 0000 0000 0000 0000 1010
System.out.println(b);
}
}
强制转换
public class Test {
public static void main(String[] args) {
int a = 300;//0000 0000 0000 0000 0000 0001 0010 1100
byet b = (byet) a;//0010 1100
System.out.println(b);//44
}
}
public class Test {
public static void main(String[] args) {
int a = 200;//0000 0000 0000 0000 0000 0000 1100 1000
byet b = (byet) a;//1100 1000
System.out.println(b);//-56
}
}
其他运算符
运算符 | 含义 | 运算规则 |
---|---|---|
& | 逻辑与 | 0为false,1为true |
| | 逻辑或 | 0为false,1为true |
<< | 左移 | 向左移动,地位补0 |
>> | 右移 | 向右移动,高位补0或1 |
>>> | 无符号右移 | 向右移动,高位补0 |
文章来源:https://www.cnblogs.com/Y423x/p/17922267.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签: