当前位置:编程学习 > C#/ASP.NET >>

>>运算符问题

请教一下,下面这两种写法(A写法和B写法)又和区别?


byte a;
ushort b;

//A写法
a= (byte)((b>> 8) & 0xFF);

//B写法
a= (byte)(b>> 8);
--------------------编程问答-------------------- b是两位,a= (byte)((b>> 8) & 0xFF);是为了使b的高位为0,只剩下低位 --------------------编程问答-------------------- 谢谢1楼,不过想问一下,在 >>8 的时候左侧8位已经都变成0了,这种写法有没有什么特殊的用意呀? --------------------编程问答-------------------- 么区别!

& 0xFF跟没有与是一样的! --------------------编程问答--------------------
在看一段很不错的代码时看到这种写法的。


不像是随便写的,不知道有何好处? --------------------编程问答-------------------- 没有区别,写的人可能是从其它语言转到c#的,把其它语言的习惯保留了而已 --------------------编程问答-------------------- ushort 是16位的
byte是8位的~ & 0xFF之后取的是b的高8位

0xff可能是用于过滤最前面的符号位的,
之前我在用子网掩码计算广播地址的时候就遇到过这样的问题,不与的话会有溢出,当然这里的类型是USHORT应该不会有这样的问题~~int型会有种问题
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,