c语言数据常用操作:
1、算数运算
+,-,*,/
越界考虑(1011 + 0111 越界),加减法,
乘除注意范围,无符号和有符号;
求模%
得到范围数字;
实现循环;
2、位运算
左移,右移
左移一次,相当于*2(1000 0000 *2会溢出导致结果为0)
0x8000000表示的是一个32位二进制数,转换为二进制为10000000000000000000000000000000。
32位寄存器*2左移后溢出
;右移一次,相当于/2;如果是无符号数,除法结果变为正数;
C语言中a<<n%32;c语言移位对32求模的结果;
左移的空位都是补0;右移的空位,根据这段内存中是否有符号;
无符号数的移动空位填0,有符号的移动右移空位为符号位;
与,或,非
对某个位进行设置和清除
对某些区域进行设置和清除
异或
异或的特性
交换两个数
加密,解密,寻找独立的数
:不同为真;a^b;
交换两个数:a=a^b;b=a^b;a=a^b;
1011;
0110; 密码
------------------
1101 加密后的数据;
0110;密码
----------------
1011;解码成功原文;
当原始数据比较大的时候,可以分块进行加密解密;
3、逻辑运算
c语言的真和假的状态
非0值都为真;
逻辑与和逻辑或
A && B;先后关系的要求:A为真,B才执行,A为假,B不执行;
A || B:A真,B不执行;A假,B执行;
分支结构
if
switch(){
case 数字(不能用浮点数);
}
c语言不支持浮点数:1:switch判断;2、求模;
循环:for , while, do...while,goto;