【C语言】第一章·第六节 初识操作符(了解“!“ 、“~“ 逻辑操作符、初识原、反、补码)


—————————————————————————————————————————

一、“!” 逻辑操作符

在变量前面加"!",把变量变为假(在C语言中数字0表示假,非0表示真即使是负数),如果变量本身为"0"变为真(非0)

例:

int a = 100;
printf("%d\n",!a);//运行结果为0

—————————————————————————————————————————

二、"~"按位取反

           对一个数的二进制按位取反

把该数所有二进制中的数字,“1"变为"0”,“0"变为"1”,包括符号项。

例:

int a = 0;
printf("%d\n",~a);//运行结果为"-1"

整数a = 0

a 二进制 : 00000000 00000000 00000000 00000000 //32位(至于为什么是32为,先记住后面讲)

~a 二进制: 11111111 11111111 11111111 11111111 //32位数字

第一个数字也就是标了橙色的数字就为符号位,"1"为负、 "0"为正

2.1 原、反、补码

一个整数的二进制表示有3种: 原码、反码、补码

整数在内存中存储的是补码

上面~a为啥二进制是: 11111111 11111111 11111111 11111111 却得到数字-1呢

关于-1的原码、反码、补码的计算:

10000000 00000000 00000000 00000001(原码)

11111111 11111111 11111111 11111110 (反码)

11111111 11111111 11111111 11111111 (补码 计算机内存中的存储方式)

原码转反码:符号位不变,其他按位取反

反码转补码:反码+1

换过来也一样的

补码转反码:补码-1

反码转原码:符号位不变,其他按位取反

注意:正数也有原码、反码、补码,但是正数的原码、反码、补码都相同

—————————————————————————————————————————

三、"++"前置加加/后置加加

  前置加加,先加后用

  后置加加,先用后加

例:

int a = 10;
int b = ++a;//前置加加,先加后用,即b = 11,a = 11


int c = 10;
int d = c++;//后置++,先用后加,即 b = 10,a = 11

—————————————————————————————————————————

四、 "- -"前置减减/后置减减(- -内部没空格)

    与"++"同理:
    			前置--,先减后用
                后置--,先用后减

例:

int a = 10;
int b = --a;//前置减减,先减后用,即b = 9,a = 9


int c = 10;
int d = c--//后置--,先用后减,即 b = 10,a = 9

—————————————————————————————————————————

五、(类型)强制类型转换

用途与定义:当要赋的值与定义的类型不一样时,使用强制类型转换,把要赋的值强制转换为与强转类型内的类型相同

例:

   int a = 3.99;//把浮点型赋值给整形会有警告
//整形    浮点型

int b = (int)3.99;//把浮点型强制转换为整形后再赋给整形

注意:在使用强制类型转换时候会导致精度丢失,如a = 3.99,但是在强制转换(int)后,存入b中的是3。后面的精度丢失了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值