1. 二进制与二进制的转换
其实我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进 制、10进制、16进制是数值的不同表示形式而已。
首先我们还是得从10进制讲起,其实10进制是我们生活中经常使用的,我们已经形成了很多尝试:
• 10进制中满10进1
• 10进制的数字每⼀位都是0~9的数字组成 其实二进制也是⼀样的
• 2进制中满2进1
• 2进制的数字每⼀位都是0~1的数字组成 那么 1101 就是二进制的数字了。
1.1 二进制与十进制
其实10进制的123表示的值是⼀百二十三,为什么是这个值呢?其实10进制的每⼀位是权重的,10进 制的数字从右向左是个位、十位、百位....,分别每⼀位的权重是 10 , 10 , 10 ...
1.2 十进制转二进制
1.3 二进制转八进制
8进制的数字每⼀位是0~7的,0~7的数字,各自写成2进制,最多有3个2进制位就⾜够了,⽐如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀ 个8进制位,剩余不够3个2进制位的直接换算。
如:2进制的01101011,换成8进制:0153,0开头的数字,会被当做8进制。
1.4 二进制转十六进制
16进制的数字每⼀位是0~9,a ~f 的,0~9,a ~f的数字,各自写成2进制,最多有4个2进制位就⾜够了, 比如 f 的二进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进 制位会换算⼀个16进制位,剩余不够4个二进制位的直接换算。
如:2进制的01101011,换成16进制:0x6b,16进制表示的时候前面加0x
2. 原码,反码,补码
原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。
3.移位操作符
>> 右移操作符
<<左移操作符
注:移位操作符的操作数只能是整数。
3.1 左移操作符
移位规则:左边抛弃、右边补0
3.2 右移操作符
移位规则:首先右移运算分两种:
1. 逻辑右移:左边用0填充,右边丢弃
2. 算术右移:左边用原该值的符号位填充,右边丢弃
4. 位操作符:&、|、^、~
&:按位与(利0)
|:按位或(利1)
^:按位异或
~:按位取反
5. 单目操作符
单目操作符有这些:!、++、--、&、*、+、-、~ 、sizeof、(类型)
6. 逗号表达式
逗号表达式,从左向右依次执行。整个表达式的结果是最后⼀个表达式的结果。
注意:逗号表达式,前面表达式会影响后面表达式的结果,但是整个表达式的值取决于最后(最右边的)