C#代码中用UL 0B 0X等前后缀表示数字

news/2024/11/24 13:25:19/

代码中不同的数值表示法官方文档都有,但这东西不常用,要用时又要专门翻下文档,所以整个博客记录整理一下

数字表示

官方文档-整数:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
官方文档-浮点:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/floating-point-numeric-types#code-try-3

int a1=1;						//1
int a2=0xFF;					//255
int a3=0b_1111_1111;			//255long l1=1L;						//1
ulong ul1=10_10UL;				//1010double d1=10_10D;				//1010.00
double d1=10_10.10_10D;			//1010.1010float f1=10_10F;				//1010.0
float f1=10_10.10_10F;			//1010.1010decimal dm1=10_10M;				//1010.00
decimal dm2=10_10.10_10M;		//1010.1010

总结

  • 前缀后缀都不区分大小写,且一般用大写,避免和其它字符搞混。
  • 前缀0x:16进制表示法,可以用_分割,可以用在各种类型上面。但需要注意类型问题,比如 int a=0xFF_FF_FF_FF会提示类型错误。
  • 前缀0b:2进制表示法,可以用_分割,可以用在各种类型上面。
  • 整数文本因为是16进制或2进制表示,这2种方式本身是没有正负号概念的,会解析为正值。比如文本 0xFF_FF_FF_FFuint 类型中表示数字 4294967295,在int类型中表示数字-1
  • 后缀U:表示uint或ulong。
  • 后缀L:表示long或ulong,一般用大写,用小写容易和数字1搞混。
  • 后缀UL:后缀U和后缀L的组合。
  • 后缀D:表示double
  • 后缀F:表示float
  • 后缀M:表示decimal

枚举

官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/enum

枚举支持在类型上面写文件,所以可以使用下面这种方式使用flags

    [Flags]public enum PermissionType : uint{ALL = 0xFF_FF_FF_FF,Read = 0b_00_01,Write = 0b_00_10,Execute = 0b_01_00,ReadWrite = Read | Write,ReadExecute = Read | Execute}

第一个ALL0x方式写16进制:我习惯性枚举写一个默认值,可能是None或是ALL。这里写ALL时需要保证他的所有2进制位为1,用0x直接表示比较方便,同时需要替换上面的类型为uint,默认的int原生不支持这种写法,需要替换为unchecked((int)0xFF_FF_FF_FF)就不太美观。

这种方式书写Flags的枚举,避免了以前口算1,2,4,8..的麻烦,就算你心算强大,当枚举项比较多的时候就不那么容易计算了(你一口气算算2^14=?)。现在这种写法直接让你书写2进制,需要增加时进位就行了,非常方便!


http://www.ppmy.cn/news/722785.html

相关文章

【NVMe2.0b 12】NVM 容量模型

NVM 容量模型 3.8NVM容量模型3.8.1概述3.8.2Media Unit的组织示例3.8.2.1简单的NVM子系统3.8.2.3横向组织的双NAND NVM子系统 3.8.3容量报告 3.8NVM容量模型 3.8.1概述 NVM 子系统可以报告 NVM 子系统内多个实体的容量相关信息。此容量报告模型包括 NVM subsystem、域&#x…

【NVMe2.0b 7】NVMe 基本队列数据结构

NVMe 队列数据结构与命令仲裁机制 3.3.3Queueing Data Structures3.3.3.1Submission Queue Entry3.3.3.2Common Completion Queue Entry3.3.3.2.1Status Field 定义3.3.3.2.1.1Generic Command Status Definition3.3.3.2.1.2Command Specific Status 定义3.3.3.2.1.3Media and …

【NVMe2.0b 16-1】Get Log Page

目录 5.16Get Log Page command5.16.1Log Specific Information 5.16Get Log Page command Get Log Page 命令返回包含请求的 log page 的数据缓冲区。Get Log Page 命令可能会受到 ANA 状态的影响(请参阅第 8.1.4 节)。 Get Log Page 命令使用 Data P…

【NVMe2.0b 6】NVMe 队列模型

NVMe 队列模型 3.3NVM Queue Models3.3.1基于内存的传输队列模型3.3.1.1队列设置与初始化3.3.1.2Queue的使用3.3.1.2.1Completion Queue Flow Control 3.3.1.3Queue Abort3.3.1.4Empty Queue3.3.1.5Full Queue 3.3.2基于消息的传输队列模型3.3.2.1胶囊和数据传输3.3.2.1.1Comma…

AB=0

一个很有趣的知识点。 ABO时:将B进行列分块,B(β1,β2,…,βn) ABA (β1,β2,…,βn)(O,O,O,O,…,O) 从而,AβiO, i1,2,…,n 即βi是方程组Ax0的解 则,向量组β1,β2,…,βn可由Ax0的基础解系线性表出。所以r( (β1,β2,…,β…

【NVMe2.0b 3】NVM 控制器架构模型

NVM 控制器架构模型 3.1.1控制器模型3.1.2Controller Types3.1.2.1I/O Controller3.1.2.1.1Command Support3.1.2.1.2Log Page Support3.1.2.1.3Features Support 3.1.2.2Administrative Controller3.1.2.2.1Command Support3.1.2.2.2Log Page Support 3.1.2.3Discovery Contro…

000000000000000000000000

xplatform: 选择交叉编译时的目标 mkspec prefix :指定 make install 的位置 ./configure -release -opensource -confirm-license -xplatform aarch64-linux-gnu-gcc -prefix /opt/aarch64—qt5 -nomake examples -nomake tools -nomake tests -no-op…

【NVMe2.0b 2】NVMe 结构理论

2操作理论 NVM Express 可扩展接口旨在满足使用基于 PCI Express 的固态驱动器或光纤连接设备的存储系统的需求。该接口提供了优化的命令提交和完成路径。它通过支持多达 65,535 个 I/O 队列和每个 I/O 队列多达 64 Ki - 1 个未完成的命令来支持并行操作。此外,还添…