(7)java基础知识-原码、反码、补码、运算符
一、原码、反码、补码
原码
一个数转化成二进制。
用最高位来表示正负,最高位为0表示正数,最高位为1表示负数。
例如:
short i=5;
因为在java里short占2个字节转化成二进制就是 00000000 00000101
所以 00000000 00000101就是5的原码
short i=-5;
因为负数的最高位是1
所以 10000000 000000101 就是-5的原码
反码
正数的反码不变,负数的反码就是在原码的基础上,符号位不变,其他位取反(0变1,1变0)。
5的反码: 00000000 00000101
-5的反码:11111111 11111010
补码
正数的补码还是不变,负数的补码就是在反码的基础上做+1运算
5的补码:00000000 00000101
-5的反码:11111111 11111011
总结:正数的反码、补码都不变。
负数的反码、最高位不变其余为取反。
负数的补码的反码的基础上加1。
0的原码和反码有两种形式但补码只有一只形式,0的原码有两种形式00000000 00000000 和10000000 00000000
对应的0的补码也有两种形式 00000000 00000000 和11111111 11111111
0的补码只有个一种 00000000 00000000
为何要要使用原码、反码和补码?
详细请看原码, 反码, 补码 详解
二、运算符
1、算数运算符
+,-,*,/(正斜杠),%(取模)
2、自加、自减运算符
++,--
++x 和 x++的区别?
int i,a,b;
a=5;
b=5;
i=++a;
System.out.println("i="+i);//结果 i=6
System.out.println("a="+a);//结果 a=6
i=b++;
System.out.println("i="+i);//结果 i=5
System.out.println("b="+b);//结果 b=6
++x先自己累加,在计算正个公式
x++计算整个公式,再计算自己
3、关系运算符
>,>=,<,<=
==,!=
注:一个等号叫做赋值,两个等号判断真或假
关系运算符的结果只有两个要么true,要么false
int a,b;
a=5;
b=5;
boolean c;
c=a==b;
System.out.println(a<b);//结果:false
System.out.println(c);//结果:true
4、位运算符
位运算符把数值转换成二进制进行计算
例:int a=5;
int b=9;
因为它们是int型
所以在内存中占4个字节,共32位
5二进制: 00000000 00000000 00000101
9二进制: 00000000 00000000 00001001
5和9上下同位各自进行计算
&(与)运算符
上下只要有一位为0则结果为0
上下都是1时结果才为1
5&9 二进制结果:00000000 00000000 00000001 转成十进制结果:1
|(或)运算符
上下只要有一位为1则结果肯定为1
上下都是0结果才为0
5|9二进制结果:00000000 00000000 00001101 转成十进制结果:13
^ (异或)运算符
上下全是0,或者全是1,总之上下数字相同的话该结果为0
上下一个0一个1结果为 1
5^9 二进制结果:00000000 00000000 00001100 转成二进制:12
~ (非)运算符
~运算符是对单个数字的二进制取反
例如 ~9 二进制是:0110 转成二进制:
5、位逻辑运算符
&& 与
|| 或
! 非
6、位移运算符
<< 左移
>> 右移
7、赋值运算符
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
8、三目运算符
<表达式1>?<表达式2>:<表达式3>; "?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果。
例子:int i = ( > ) ? ( + ) : ( - );
//结果为i = 8.因为5 > 3为true,所以i = 5 + 3.
运算符的优先级
(7)java基础知识-原码、反码、补码、运算符的更多相关文章
- java基础知识-原码,反码,补码
1.正数:原码,反码,补码:都一样. 2.负数:和正数的储存方式不同,负数都是以补码形式存储的. <1>负数的补码 把负数的原码除了符号位取反后再+1. <2>负数的原码 把对 ...
- C语言基础 (4) 原码反码补码与数据类型
1.回顾 使用gcc编译代码 gcc hello.c -o hello windows下编译代码 C语言编译步骤: 预处理(头文件展开,干掉注释) gcc -E hello.c -o hello.i ...
- C语言基础(4)-原码,反码,补码及sizeof关键字
1. 原码 +7的原码是0000 0111 -7的原码是1000 0111 +0的原码是0000 0000 -0的原码是1000 0000 2. 反码 一个数如果值为正,那么反码和原码相同. 一个数如 ...
- Java语法基础课 原码 反码 补码
原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 反码的表示方法是:正数的反码是其本身:负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 补码的表示方法是在反码的基础 ...
- Java基础-原码反码补码
Java基础-原码反码补码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码. 一.原码 ...
- java原码反码补码以及位运算
原码, 反码, 补码的基础概念和计算方法. 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值, 即 ...
- JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...
- Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...
- Java 原码 反码 补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...
随机推荐
- VS的几个实用快捷键
Ctrl + K, D格式化代码 Ctrl + L 删除一行 Ctrl + K, S调出自动代码块 svm之后二下TAB 生成Main方法 Ctrl + K,C注释代码块Ctrl+K,U取消注释
- 《Cracking the Coding Interview》——第18章:难题——题目9
2014-04-29 04:18 题目:有一连串的数被读入,设计一个数据结构,能随时返回当前所有数的中位数. 解法:用一个大顶堆,一个小顶堆将数分成数量最接近的两份,就能轻松得到中位数了. 代码: / ...
- python的inspect模块
一.type and members 1. inspect.getmembers(object[, predicate]) 第二个参数通常可以根据需要调用如下16个方法: 返回值为object的所有成 ...
- hp raid配置
http://www.cnblogs.com/zhangxinglong/p/5585139.html [root@192e168e100e27 ~]# fdisk -l Disk /dev/nvme ...
- Opencv4.0.0安装包
这个资源是Opencv4.0.0安装包,包括Windows软件包,Android软件包,IOS软件包,还有opencv的源代码:需要的下载吧. 点击下载
- PTA 11-散列3 QQ帐户的申请与登陆 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/723 5-15 QQ帐户的申请与登陆 (25分) 实现QQ新帐户申请和老帐户登陆的简 ...
- 根文件系统制作、NFS配置与安装及利用NFS挂载根文件系统
最近打算从头开始制作根文件系统,下面是开发过程. 一.根文件系统的制作 0.FHS(Filesystem Hierarchy Standard)标准介绍 该标准规定了根目录下各个子目录的名称及其存放的 ...
- nodejs & docker
nodejs & docker https://github.com/xgqfrms-GitHub/Node.js/blob/master/Docker-Nodejs/translation. ...
- 使用pdb模块调试Python
在Python中,我们需要debug时,有三种方式: 加log语句.最简单的方式是添加print()语句来输出我们想要获知的状态或者变量,好处是简单容易操作,坏处是debug完了之后,还需要将prin ...
- P3531 [POI2012]LIT-Letters
题目描述 Little Johnny has a very long surname. Yet he is not the only such person in his milieu. As it ...