C语言学习之前序
C语言主要提供了六种位运算:与、或、取反、异或、左移和右移
1、按位与运算(&)
仅当相同位置的两个bit都为1时,与操作结果为1,否则为0
-
正&正 —— 直接运算
-
正&负 —— 将负数转换成补码后直接运算
2、按位或运算(|)
相同位置的两个bit有一个为1时,结果为1
运算方式同上
3、取反运算(~)
对每一个bit取反,右结合性
4、异或运算(^)
当相同位置的bit不同时,结果为1;否则结果为0
-
转换为补码后运算
5、左移运算(<<)
把操作数的所有二进制位左移若干位,高位舍弃,低位补0
// 如果数据较小,且被丢弃的高位不包含1,那么左移n位相当于乘以2的n次方
6、右移运算(>>)
把操作数的所有二进制位右移若干位,低位丢弃,高位补0或1;如果符号位为1则补1,为0补0
// 如果被丢弃的位不包含1,则右移n位相当于除以2的n次方
进制转换
整数转换
十进制转二进制
方法:除2反向取余法
将十进制数除2得到的整数保留,余数写在右边,依次除2,直到整数部分为0,最后将余数从下至上逆序输出,即为该整数的二进制
十进制转八进制
略
十进制转十六进制
方法:除16反向取余法
小数转换
十进制转二进制
方法:乘2取整,顺序输出
将小数乘2,取整数部分写到右边,接着再用乘后的小数部分乘2,继续取整数部分,直到达到精度要求,最后将所有整数部分顺序输出
十进制转八进制、十进制转十六进制均类似
其他进制转十进制
加权求和
指数为:~ 2 1 0 . -1 -2 ~
莫愁前路无知己,天下谁人不识君