C语言学习之前序

发布时间 2024-01-10 23:27:20作者: Arthur-Morgan

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,最后将余数从下至上逆序输出,即为该整数的二进制

img

十进制转八进制

方法:除8反向取余法

十进制转十六进制

方法:除16反向取余法

小数转换

十进制转二进制

方法:乘2取整,顺序输出

将小数乘2,取整数部分写到右边,接着再用乘后的小数部分乘2,继续取整数部分,直到达到精度要求,最后将所有整数部分顺序输出

十进制转八进制、十进制转十六进制均类似

其他进制转十进制

加权求和

指数为:~ 2 1 0 . -1 -2 ~