首页 > 编程知识 正文

c语言中的取反,c语言算术运算符

时间:2023-05-03 23:33:19 阅读:14250 作者:2316

c语言位运算符和作用与异或取逆左移和右移

c语言位运算符和作用:“与”、“或”、“异或”、“反”、“左移”、“右移”

3358 www.cn blogs.com /张彭寿/p/3543056.html源地址

一.分等级

如果相应的二进制位都为1,则该位的结果值为1,否则为0

适用:

(1)清除

如果想清零一个存储单元,请查找满足以下条件的二进制数,即使所有位都为0 :

原数为1的位,新数的相应位为0。 然后通过运算两者,可以达到清零的目的。

a0010101011

b 10010100

c 00000000 //c=a b

)2)取一个数中的特定位数

如果存在整数a (2字节)并且想要获得其中的低字节,可以以比特为单位与a和8个1。

a 00101100 10101100

b 00000000 11111111

c 00000000 10101100 //c=a b

(3)保持指定的位:

a0101010100

b 00111011

c 00010000 //c=a b

二、|按位或

如果两个对应的二进制位之一为1,则该位的结果值为1。 借用逻辑学和运算的语言,坦率的冰淇淋是真的

应用:将一个数据的部分位值设置为1

a 00110000

b 00001111

c 00111111 //c=a | b

三、^位异或

如果参加运算的两个二进制位的值相同则为0,否则为1

应用:不使用临时变量,交换两个值

计算前:

a=3,即011(2; b=4,即100(2) )。

计算过程:

a=a ^ b; //即111=011 ^ 100

b=b ^ a; //即011=100 ^ 111

a=a ^ b; //即100=111 ^ 011

计算后:

a=100(2)即4; b=011(2)即3;

四、~反

~是一元运算符,用于按位反转一个二进制数。 也就是说,将0变为1,将1变为0

五.向左移动

用于将一个数的各二进制位全部向左移动n位,向右补充0

六.向右移动

将一个整数的各二进制比特向右移位n位,将向右移位的低位舍弃,相对于无符号的整数,高位补充0

七.原码、反码、补码的基础概念和计算方法

在调查机器为什么使用补码之前,首先要考虑原码、反码、补码的概念“杂证煮? 计算机必须以一定的编码方式保存。 原代码、反码、候补代码是机器存储具体数字的编码方式。

)1)源代码

原始代码是代码位加上真值的绝对值,即第一位表示代码,其馀位表示值。

例如如果是8位二进制:

[ 1]原=0000 0001

[-1]原=1000 0001

第一位是符号位。 第一位是符号位,因此8位二进制数的可能范围为:

[ 111111,0111111 ]即[-127,127 ]

源代码是人脑最容易理解和计算的表示方法。

)2)反码

反码的显示方法是:

正数的反码是它本身

负数的反码基于其原始码,码的比特不变,其馀各位取反

[ 1]=[00000001]原=[00000001]反

[-1]=[10000001]原=[11111110]反

当反码表示负数时,人脑无法直观地看到其数值。通常将其转换为原始代码进行计算。

)3)补码

补数的表示方法为:

正数的补数是它本身

负数的补数,根据其原符号,符号的位数不变,剩下的各位取反,最后1.(即根据反符号1 ) )。

[ 1]=[00000001]原=[00000001]反=[00000001]补

[-1]=[10000001]原=[11111110]反=[11111111]补

关于负数,补数的表示方法人脑也无法凭直觉识别其数值.通常需要转换成原始代码计算其数值.

补数例: 16位变量求补数,如-266补数求法:()0xfef6 )1)结果为0xfef6

参考: http://liuye 066.iteye.com/blog/707114

关于c语言位运算符及其作用和异或逆左移和右移的教程

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。