我有很多常用的并且容易忘记的语法,所以直接给写成笔记方便记忆
目录:1.数据存储
2.按位运算符
3.逻辑操作符
4.三目操作符
5.左右移操作符
6.进制之间的转换
一.数据存储
计算机的底层数据存储都是使用 2 进制补码形式存储,最高位是符号位正数最高位是 0,负数最高位是 1
正数的原码反码补码一样,称为三码合一
负数的原码:把 10 进制转换为 2 进制,最高位为 1
负数的反码:最高位(符号位)不变,在原码的基础上按位取反(0 变 1,1 变 0) 负数的补码:(反码+1)
例如:正数:0001 1010(它的原码反码补码都相同) 负数:1001 1010 负数反码:1110 0101 负数补码:1110 0110
二、按位运算符
1.按位与&:
以补码的形式进行运算,两个数的 2 进制数同时为 1 结果为 1,不同时为 1 则为 0 例如:数值 A:0000 1001 数值 B:0000 0101 结果: 0000 0001
2.按位或|:
以补码的形式进行运算,两个数的 2 进制其中一个为 1 就为 1,否则为 0 例如:数值 A:0000 1000 数值 B:0000 0101 结果: 0000 1101
3.按位异或^:
以补码的形式进行运算,上下两个数值不同则为 1,相同为 0 例如:数值 A:0000 1010 数值 B:0000 0110 结果: 0000 1100 位操作符只能用于整数!!!
三、逻辑操作符
1.逻辑与 &&:
两边条件都为真时,结果为真,两边有一个为假,结果就为假第一个条件为假,第二个条件就不再判断例如:真&&假 运行结果:0
2.逻辑或 ||:
只要有一个条件为真就为真,两个条件都为假就为假
第一个条件为真时,第二个条件就不再判断例如:真||假 运行结果:1
3.逻辑非!:
条件为假时,就为真,条件为真时,就为假例如:!真 运行结果:0
四、三目操作符
1.三目操作符?:
两个条件比较,条件为真时,返回第一个值,为假时,返回第二个值例如:2>1 ? 真:假
五、左右移操作符
1.左移操作符<<
左侧丢弃,右边补 0
例如:int a = -1;(2 进制表示为 1000 0001)为方便观察只写八个位第八个位为符号位 int b = a << 1;
输出 b 的结果为-2;(2 进制表示为 1000 0010);
2.右移操作符>>
1.算数右移:右边丢弃,左边补符号位
2.逻辑右移:右边丢弃,左边补 0
例如:int a=-5;(2 进制表示为 1000 0101) int b =a>>1;
输出 b 的结果为-3(2 进制表示为 1000 0011)
左右移操作并不改变 a 本身的值,并且左右移操作符只能用于整数
六、进制之间的转换
1.1. 2 进制转 8 进制
每 3 个 2 进制位合成一个组,每 3 个 2 进制位计算 2 的 2^0,2^1,2^2 次方,得到的结果就是 8 进制例如:0011 01111,转换的结果为 157
1.2. 8 进制转 2 进制
每一个 8 进制位分成一组 2 进制位,一组 3 个 2 进制位,得到的结果就是 2 进制例如:157 分成 3 组 2 进制位
从左往右计算:1 转 2 进制为 001,5 转 2 进制为 101,7 转 2 进制为 111; 合起来的结果就是 2 进制:01101111
2. 10 进制转 2 进制
每次除以 2 取余数,直到最后一个数商 0 为止,把计算的结果反着看就为 10 进制数值例如:13/2 商 6 余 1,6/2 商 3 余 0,3/2 商 2 余 1,1/1 商 0 余 1 得到的 2 进制数值为 1011,把它反过来为 1101
1101 二进制计算的结果为 13
3.1. 2 进制转 16 进制
每 4 个 2 进制位合成一个组,每 4 个 2 进制位计算 2 的 2^0,2^1,2^2,2^3 次方得到的结果就是 16 进制,16 进制中 0-9 用数字表示,10-15 用 a-f 表示例如:0001 0010 0100 0000 1101 1111,转换的结果为 0x1240df
3.2.16 进制转 2 进制
每一个 16 进制位分成一组 2 进制位,一组 4 个 2 进制位,得到的结果就是 2 进制
例如:1240df 分成 6 组 2 进制位,从左往右计算:1 转 2 进制为 0001,2 转 2 进制为 0010
4 转 2 进制为 0100,0 转 2 进制为 0000,d 转 2 进制为 1101,f 转 2 进制为 1111 合起来的结果就是 2 进制:0001 0010 0100 0000 1101 1111