C# 位与赋值x&=y,位或赋值x|=y,异或赋值x^=y,是怎样赋值的 什么时候用?最好有具体例子

作者&投稿:尹枯 (若有异议请与网页底部的电邮联系)
++x=++y和x++=y++哪一种赋值方法是正确的,为什么~

都不正确,赋值号左边需要变量,而++x和x++都是表达式

C.
(x-y)其实是要被转换成bool形的,x-y等于0的时候就是false,否则就是true
C的意思就是不等于0.

测试:
int x = 1, y = 5;
x-y ? x++ : y++;
printf("%d %d
", x, y);
结果为 2 5
int x = 1, y = 5;
(x-y>0||x-y<0) ? x++ : y++;
printf("%d %d
", x, y);
结果为 2 5
int x = 1, y = 5;
x-y==0 ? x++ : y++;
printf("%d %d
", x, y);
结果为 1 6
。对答案保持一定的质疑

x&=y 位与运算,例如1&=0结果x为0
x|=y 位或运算,例如1|=0结果x为1
x>>=y 右位移运算,例如10>>=1结果x为1
x<<=y 左位移运算,例如1<<=1结果x为10
x^=y ^这个忘了
以上都是2进制运算

这个看你的业务了,比如我的业务有这样一个功能,
每个软件对应的分数,我一开始是用字典,Dictionary<int,int>来处理,因为数据量很大,这个字典比较占内存,我就用一个long[]数组代替Dictionary<int,int>
long的前32位是软件id,后32位是软件分数
那么对于每个long数值a
int score = a & 0xffffffffffffffff;
int id = a>>32;// 右移32位,把低位的清0;

另外,C#里的枚举也可以用或操作,比如正则里的:
Regex.IsMatch("abc", @"\d+",
RegexOptions.IgnoreCase | RegexOptions.Multiline)// 后面的枚举或,表示2个都生效
这种枚举通常定义是这样的:
[Flags]// 有这个标记
enum abc{
a=0,
b=1,
c=2,
d=4,
e=8,
f=16
}


凤庆县18491106862: C# 位与赋值x&=y,位或赋值x|=y,异或赋值x^=y,是怎样赋值的 什么时候用?最好有具体例子 -
邓军派丽: 这个看你的业务了,比如我的业务有这样一个功能, 每个软件对应的分数,我一开始是用字典,Dictionary<int,int>来处理,因为数据量很大,这个字典比较占内存,我就用一个long[]数组代替Dictionary<int,int> long的前32位是软件id,后32位是...

凤庆县18491106862: C# 如何给字符串中的某一位赋值? -
邓军派丽: [] 运算符可以用于对 string 的各个字符的只读访问. 你看看这话,官方那个例子只是说只可以只读访问 string str = "test"; char x = str[2]; // x = 's'; 官方的说法 而且你那···取字串也写错了啊 哪有a.Substring="e"; 的··· 可能你要用Replace才可以了···

凤庆县18491106862: C#赋值符|=和&=
邓军派丽: 先按位或计算再赋值,先按位与再赋值.按二进制计算.

凤庆县18491106862: &=在c语言中是什么意思 -
邓军派丽: 假设n &= r; 意思是 n = n & r; &是求算数与运算,就是n, r的二进制表示的诸位求与 与,只有两位都为1,才为1,否则为0

凤庆县18491106862: C#中的位运算怎么计算比如int i=1000;i<<=4;
邓军派丽: i<<=4的意思就是i=i<<4 ,就是i赋值为将i右移4位后的值.在c#中的int应该是32位的,先把1000转换成二进制的位00000000000000000000001111101000 ,然后右移4位,为0000 0000 0000 0000 0011 1110 1000 0000结果为(十进制)31872 <<是左移,搞叉了,不好意思(本人左手吃饭,秀逗了). 十进制下的结果是16 000

凤庆县18491106862: C# ^符号什么意思 -
邓军派丽: ^ 是 逻辑 XOR(异或)的意思 ^= 是 逻辑 XOR(异或)后赋值 没有见过你那样书写的

凤庆县18491106862: c# “|=” 这个是什么符号? -
邓军派丽: |= 是按位或之后再赋值,例如 x|=y 等价于 x=x|y和+=,-=之类的同理

凤庆县18491106862: c# 里,位运算 ” "|~"还有“&~”是怎么用的?我看例子里x = 2,y = 3; x&~y = 0,x&~x = 0,x|~y = - 2,x|~x = - 1为什么? -
邓军派丽:[答案] 以4位为例:x = 2 = B0010 ~x = B1101 = 13y = 3 = B0011 ~y = B1100 = 12x & ~y=B0010 & B1100 = 0x & ~x = B0010 & B1101 = 0x | ~y = B0010 | B1100 = B1110 = 14x | ~x= B0010 | B1101 = B1111 = 15上面最...

凤庆县18491106862: c# 赋值符|= -
邓军派丽: 一楼不知道不要乱说.这个是位或运算后赋值.如:a=0x11001(二进制) b=0x10101(二进制) 则 a|=b运算后 a=0x11101 即对应每一位都按照或运算

凤庆县18491106862: c++语言中按位异或赋值是什么意思 -
邓军派丽: C++中数据一般都是按照多少字节来存储的,而我们知道一个字节是有8位, 内存中每一位要么是1要么是0, 逻辑运算异或的运算法则为a异或b=a'b或ab'(a'为非a). 真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假.就是说两个值不相同,则异或结果为真.反之,为假. 比如说一个char型字符'15',在内存中表现为00001111,按位异或就是将对应为进行逻辑异或运算,运算结果再赋值给某个变量的某一位

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网