详细操作符

本文介绍了整数的原码、反码和补码表示法,重点讲解了移位操作符(左移和右移)、位操作符以及C语言中的整形提升和算术转换规则,帮助读者理解数值运算在编程中的处理方式。
摘要由CSDN通过智能技术生成

一,原码  反码  补码

(1)用于整数的二进制位,即他们的表示方法为原码,反码,补码。整数分为有符号和无符号。有符号整数二进制位第一位“0”表示为正,“1”表示为负。

(2)正数的原码,反码,补码都相同。

         负数的三种表示方式各不相同。

(3)原码:直接将数值按照正负形式翻译成二进制得到原码。

         反码:将原码的符号位不变,其它位依次按位取反得到反码。

         补码:反码加一得到补码。

     注:(补码得到原码,取反加一即可)

其中对于整数来说,在计算器储存其实存放的是补码。

二,移位操作符

(1)<<  左移操作符

移位规则:左边抛弃,右边补0。

eg:

结果为:

(2)>> 右移操作符

移位规则:1,逻辑右移:左边用0补充,右边丢弃。

                  2,算数右移:左边用原来符号位填充,右边丢弃。

                其中右移到底是算数还是逻辑右移,取决于编译器来实现,常见的编译器为算数右移。

  注:他们的操作数必须为整数。

三,位操作符:&,|,^,~

(1)&     按位与(二进制数列,两个为1才为1)

(2)|      按位或(二进制数列,有1则为1)

(3)^     按位异或(二进制数列,相同为1,不同为0)

(4)~     按位取反(二进制数列,0变为1,1变为0)

注:他们的操作数必须为整数。

eg:不能创建临时变量,交换两数。

第一种方法:

第二种方法:

其中第一种如果相加,当数字巨大时,可能会越界,第二种就完全不用担心。

eg:求整数在内存储存二进制数列中1的个数。

第一种方法:

第二种方法:

第三种方法:

其中第一种为补充,二三种为以上知识点。

操作符的属性:优先性,结合性

优先性和结合性决定了表达式求值的运算顺序

优先性:

如果一个表达式包含多个运算符,各种运算符的优先级是不一样的。

结合性:

如果两个运算符的优先级相同,优先级就没有办法先计算哪个了,这个时候就要看结合性。要看是左结合还是右结合,决定结合的顺序。其中,大部分是从左到右,少部分从右到左,比如赋值运算。

如果感觉记住上面有困难,这个比较简洁

表达式求值:整形提升,算术转换

C语言整形算术运算总是缺少整形类型的精度来进行。因此为了获得这个精度,表达式中字符和短整型的数在使用之前被转换为普通整形,这样的转换被称为整形提升.

整形提升的方法

1.有符号整数提升是按照变量的数据类型的符号位来提升。

2.无符号整算提升,高位不0。

算术转换

如果某一个操作数属于不同类型,那么除非其中一个操作数转换为另一个操作数的类型,否则操作就无法进行,下面的层次体系称为寻常算数转换。

如果某个操作数的类型在上面这个表排名靠后,那么首先要转换为另外一个操作类型后执行运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值