繁体   English   中英

C# 中的运算符 << 和 >> 带字节

[英]The operators << and >> in C# with byte

为什么我不能像这样使用运算符 << 和 >>?

byte num = 32;
byte aux = num << 5;

“为什么我不能像这样使用运算符 << 和 >>?”

那是因为您的 C# 表达式 num<<5 将评估为int 分配给字节的正确方法是将 int 转换为字节,丢弃 int 的高位字节,即: (byte)(num<<5) 强制转换后的结果将是预期的 0 到 255 之间的值。

因为 << 将 32 与 2^5 相乘,最大字节值为 255

byte num = 32;
int aux = num << 5;

此代码将有效

因为移位运算符仅针对 int、uint、long 和 ulong 类型定义,所以运算结果始终包含至少 32 位。 如果左侧操作数是其他整数类型(sbyte、byte、short、ushort 或 char),则其值将转换为 int 类型,如以下示例所示:

链接: https://docs.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/bitwise-and-shift-operators

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM