一、原码、反码、补码

原码

一个数转化成二进制。

用最高位来表示正负,最高位为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基础知识-原码、反码、补码、运算符的更多相关文章

  1. java基础知识-原码,反码,补码

    1.正数:原码,反码,补码:都一样. 2.负数:和正数的储存方式不同,负数都是以补码形式存储的. <1>负数的补码 把负数的原码除了符号位取反后再+1. <2>负数的原码 把对 ...

  2. C语言基础 (4) 原码反码补码与数据类型

    1.回顾 使用gcc编译代码 gcc hello.c -o hello windows下编译代码 C语言编译步骤: 预处理(头文件展开,干掉注释) gcc -E hello.c -o hello.i ...

  3. C语言基础(4)-原码,反码,补码及sizeof关键字

    1. 原码 +7的原码是0000 0111 -7的原码是1000 0111 +0的原码是0000 0000 -0的原码是1000 0000 2. 反码 一个数如果值为正,那么反码和原码相同. 一个数如 ...

  4. Java语法基础课 原码 反码 补码

    原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 反码的表示方法是:正数的反码是其本身:负数的反码是在其原码的基础上, 符号位不变,其余各个位取反. 补码的表示方法是在反码的基础 ...

  5. Java基础-原码反码补码

    Java基础-原码反码补码 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码. 一.原码 ...

  6. java原码反码补码以及位运算

    原码, 反码, 补码的基础概念和计算方法. 对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码方式. 1. 原码 原码就是符号位加上真值的绝对值, 即 ...

  7. JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  8. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  9. Java 原码 反码 补码

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

随机推荐

  1. 《Java程序员由笨鸟到菜鸟》

    <Java程序员由笨鸟到菜鸟> 在众多朋友的支持和鼓励下,<Java程序员由菜鸟到笨鸟>电子版终于和大家见面了.本电子书涵盖了从java基础到javaweb开放框架的大部分内容 ...

  2. javascript类式继承模式#4——共享原型

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. (转)Unreal Shader模块(四): 着色器编译

    本文为(转):Unreal 调试着色器编译过程     调试着色器编译过程 Rolando Caloca 在 April 19, 2016 | 学习编程 Share on Facebook  Shar ...

  4. HDU 4474 Yet Another Multiple Problem ( BFS + 同余剪枝 )

    没什么巧办法,直接搜就行. 用余数作为每个节点的哈希值. #include <cstdio> #include <cstring> #include <cstdlib&g ...

  5. JS计算器(自制)

    <!doctype html><html><header><meta charset="utf-8"><script src= ...

  6. MVC4.0 JSON JsonResult 序列化之后 对JSON 进行修改 EXTJS4.0 分页

    事情是这样的:我在MVC 下 前后台交互 用JsonResult 返回给前台使用. public JsonResult AjaxFindHospitalInfo() { List<T> l ...

  7. 【bzoj3781】小B的询问 莫队算法

    原文地址:http://www.cnblogs.com/GXZlegend/p/6803821.html 题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L ...

  8. BZOJ1086 [SCOI2005]王室联邦 【dfs + 贪心】

    题目 "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成 员来管理.他的国家有n个城市,编号为1..n.一些城市之间有道路相连,任意两 ...

  9. 商店购物 (shopping.c/cpp/pas)

    1.商店购物 (shopping.c/cpp/pas) 在滨海市开着 n 家商店,编号依次为 1 到 n,其中编号为 1 到 m 的商店有日消费量上 限,第 i 家商店的日消费量上限为 wi. 海霸王 ...

  10. BZOJ3990 排序(sort)

    排序(sort) 题目描述 小A有一个1~2N的排列A[1..2N],他希望将数组A从小到大排序.小A可以执行的操作有N种,每种操作最多可以执行一次.对于所有的i(1<=i<=N),第i种 ...