c语言如何在输出中加kg,C语言中的异或运算

本文介绍了异或运算符(^)的基本原理,即相同位为0,不同位为1,并通过示例展示了如何使用异或翻转二进制位。此外,还探讨了异或在取浮点数相反数时的应用,通过翻转浮点数的符号位来实现。对于最后一行代码`((unsigned char*)&f)[0]^=0x80`,解释了它是如何改变浮点数的符号位来取其相反数的。
摘要由CSDN通过智能技术生成

异或运算符(^)

异或运算符^又被称为XOR运算符。当参与运算的两个位相同(‘1’与‘1’或‘0’与‘0’)时结果为‘0’。不同时为‘1’。即相同为0,不同为1。

0^0=... 显示全部

异或”运算符(^)

异或运算符^又被称为XOR运算符。当参与运算的两个位相同(‘1’与‘1’或‘0’与‘0’)时结果为‘0’。不同时为‘1’。即相同为0,不同为1。

0^0=0; 0^1=1; 1^0=1;1^1=0;

例如:

a=0x55^0x3f; //a=(0b01010101)^(0b00111111)=(0b01101010)=0x6a

异或运算主要有以下几种应用:

1.翻转某一位

当一个位与‘1’作异或运算时结果就为此位翻转后的值。如下例:

a=0x35; //a=0b00110101

a=a^0x0f; //a=0b00111010 a的低四位翻转

关于异或的这一作用,有一个典型的应用,即取浮点的相反数,具体的实现如下:

f=1.23; //f为浮点型变量 值为1.23

f=f*-1; //f乘以-1,实现取其相反数,要进行一次乘运算

f=1.23;

((unsigned char *)&f)[0]^=0x80; //将浮点数f的符号位进行翻转实现取相反数

上面是一遍介绍异或运算的说明,其中的最后一行“((unsigned char *)&f)[0]^=0x80; //将浮点数f的符号位进行翻转实现取相反数”我不能理解,有高手能帮帮忙吗????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值