操作符的分类:
数的进制
15的2进制:1111
15的8进制:17
15的10进制:15
15的16进制:F
进制间的转换 15的2进制: 1 1 1 1 转化 1*2**3+1*2**2+1*2**1+1*2**0=8+4+2+1=15
10进制中满10进1
10进制的数字每⼀位都是0~9的数字组成
其实⼆进制也是⼀样的
2进制中满2进1
2进制的数字每⼀位都是0~1的数字组成
特别的16进制是1 2 3 4 5 6 7 8 9 A B C D E F
数字进制转换
权重加和
10进制转2进制
整数二进制的三种表示形式
原码、反码、补码
整数的2进制表示方法有三种,即原码、反码和补码
有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最⾼位的1位是被当做符号
位,剩余的都是数值位。
符号位都是用0表示“正”,1表示“负”。
正整数的原、反、补码都相同。
负整数的三种表示方法各不相同。
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。
反码得到原码也是可以使用:取反,+1的操作。
移位操作符
<<左移操作符
>>右移操作符
移位操作符对象只能是整数,移动的是存储在内存中的二进制位!
左移操作符
int main()
{
int a = 10;
int b = a<<1;
printf("b = %d\n",b);
printf("a = %d\n",a);
return 0 ;
}
移动的是存储在内存中的二进制位!!!但输出的还是十进制!
10的2进制写法是00001010
移动一位后 00010100 转换为10进制对应的即为 20
左边丢一位,右边补一位
右移操作符
右移操作分为两种:
1.逻辑右移:左边0填充,右边丢弃
2.算术右移:左边用原该值的符号位填充,右边丢弃
移位操作符不要移动负数位,这是标准未定义的行为。
位移操作符& | ^
首先要区别的在逻辑运算中的 &&(逻辑与)、| | (逻辑或) 这类操作符判断的是 真假问题
此处的 按位与 按位或 是对补码的二进制位进行的计算
&按位与 对应的2进制位只要有0都为0,两个同时为1才为1
| 按位或 对应的2进制位只要有1都为1,两个同时为0才为0
^按位异或 对应的2进制位相同为0相异为1
~按位取反 对应的2进制位取相反
操作符②尽请期待
道阻且长,编程学习之路漫漫,行则将至。