位运算
程序中的数在计算机内存中都是以二进制的形式存在的,位运算就是直接对整数在内存中对应的二进制位进行操作。在C语言中经常使用,这几天研究Modbus重新学习了下,记录下
位运算分为 6 种如下:
按位与
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
按位或
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1,否则为0。
按位异或
按位异或运算符:当两对应的二进位相异时,结果为1,否则为0。
按位取反
按位取反运算符:对数据的每个二进制位取反,即把1变为0, 把0变为1。
左移运算
左移动运算符:运算数的各二进位全部左移若干位,由”<<”右边的数指定移动的位数,高位丢弃,低位补0。
规律简单来说就是
下图就是c = a 2的5次方 相当于c = 6022222 =1920
右移运算
右移动运算符:把”>>”左边的运算数的各二进位全部右移若干位,”>>”右边的数指定移动的位数
规律简单来说就是
下图就是c = a %2的2次方 相当于c = 60 %2%2=15
简单的二进制转十进制,十进制转二进制方法
1、二进制转为十进制
每一位乘以2的(位数-1)次方;
如下:
1101 = 12^(4-1)+12^(3-1)+02^(2-1)+12^(1-1) 即各个位拆开,,结果为13。
2、十进制转二进制时,采用“除 2 取余,逆序排列”法:
用 2 整除十进制数,得到商和余数;
再用 2 整除商,得到新的商和余数;
重复第 1 和第 2 步,直到商为 0;
将先得到的余数作为二进制数的高位,后得到的余数作为二进制数的低位,依次排序。
如图: