(C语言)操作符2

操作符(2)

位移操作符:<< ,>>  (箭头方向朝那边就是那边的位移操作符)

位移移动的是二进制位。

int a=2
int b=a<<1;
printf("%d",b)

打印出来b的结果是4

int a=2的二进制是0000...010(总共32位数) <<1整体表示向左1个单位

则变为000...100(总共32位数)所以b=4

位操作符:& (与) | (或) ^(非)?(并不是很确定)..

赋值符:

形如a=a+5  也可用 a+=5    a=a-5 也以用 a-=5

单目操作符(只有一个操作数的)(1)

如! , - , + ,& ,   sizeof()也可以写成sizeof。用来计算类型或者变量大小的

sizeof的妙用(用来计算数组大小)

int arr[10]={0}
int sz=sizeof(arr)/sizeof(arr[0])
printf("%d",sz)

这样就可以计算数组内一个空间的大小

也可以用来计算数组整体的大小

int arr[100]={0}
int a=sizeof(arr)

上面的大小a为100*4=400

c语言中的真假定义(运用:!a)

c语言中0表示假, 非0数都表示真。(真的默认值为1)

!a的作用就是反条件a 让a的属性相反 如果a原来是真的则变成假的 反之亦然。

int a=10;
printf("%d",!a);

上面的内容打印出来的结果是0。如果a是0,则打印1(统一的)。

具体的使用场景

int a=1;
if(a)

{
}
if(!a)
{
}

a真的时候执行啥功能 ,假的时候执行啥功能。

~(按位取反)---把所有二进制中数字取反0变1,1变0

补充:一个整数二进制的最高位为符号位,1为负。

         且数据(整数)在内存中的储存形式为补码。

数据的储存类型有三种;原码,反码,补码。

正整数三码合一 三个码都一样。

对于负数 如-1 。

原码100...01(总共32位数)

反码111...10(总共32位数) 原码->反码(符号位不变,其他0变1,1变0)

补码111...11(总共32位数) 反码->补码 (在最后一位上加1)

具体使用

int a=0;

printf(”%d“,~a);

打印出a=-1

int a=0的二进制

a   000..00(总共32位)

~a 111..11   (总共32位)在内存中计算 所以得到的是补码。但"%d"形式打印出的是真实值的原码,倒推出原码可得a的值。

CRYING OUT LOVE IN THE CENTER OF THE WORLD

在世界中心喊出爱!

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值