首页 > 其他分享 >Kotlin中的无符号数据类型

Kotlin中的无符号数据类型

时间:2023-05-24 15:47:02浏览次数:41  
标签:val 符号 Kotlin UShort 数据类型 public

无符号数据类型

Kotlin支持了几种常见的无符号整型,如下表所示:

数据类型 数据大小 取值范围
UByte 1字节 0 ~ 255
UShort 2字节 0 ~ 65535
UInt 4字节 0~ 2^32-1
ULong 8字节 0 ~ 2^64-1

除此之外,还支持了对应无符号整型的数组类型:

  • UByteArray
  • UShortArray
  • UIntArray
  • ULongArray

使用无符号整型的字面值直接在数字后面加上 u 即可:

val b: UByte = 1u
val s: UShort = 1u
val l: ULong = 1u

实现原理

Kotlin的无符号整型并不是真的新增了一些数据类型,而是一个语法糖
以UShort为例,UShort实际底层是用Short类型来存储数据,将Short类型的负值区间 [-128, -1] 映射到 [128, 255]即可。
查看UShort的与源码可以发现UShort.MAX_VALUE即对应Short类型的-1

public value class UShort internal constructor(internal val data: Short) {

	companion object {
   		public const val MIN_VALUE: UShort = UShort(0)
   		public const val MAX_VALUE: UShort = UShort(-1)
   	}
}

而对于UShort类型的运算和展示,会先转成取值范围更大一级的数据类型再进行运算和展示

public inline operator fun plus(other: UShort): UInt = this.toUInt().plus(other.toUInt())
public inline operator fun minus(other: UShort): UInt = this.toUInt().minus(other.toUInt())
public override fun toString(): String = toInt().toString()

标签:val,符号,Kotlin,UShort,数据类型,public
From: https://www.cnblogs.com/jqctop1/p/17427263.html

相关文章

  • Redis的数据类型总结
    1:StringString有三种编码方式:int(整数型,直接以RedisObject存储)、raw(大于等于32位,使用sds进行存储)、内存结构为*ptr指向一个sdshdr,需要申请两次内存,可以修改!)embstr(小于32位),其中embstr只需要一次内存分配,数据比较小的时候使用,但他是只读的,如果需要修改会变为raw再执行修改2:Li......
  • ADT抽象数据类型
    数据抽象:由一组操作所刻画的数据类型抽象类型:强调作用于数据上的操作,程序员和客户端无需关心数据具体是如何存储的,只需设计/使用操作即可;可变和不可变数据类型:可变类型的对象:提供了可改变其内部数据的值的操作;不可变数据对象:其操作不改变内部值,而是构造新的对象Creator:构造器......
  • Kotlin学习 01
    之前因为工作没有转型kotlin的必要,并且一些杂事较多,一直没有好好深入学习kotlin。现在放眼看去,kotlin已经是统治地位了,不会kotlin,真不好意思说自己会做安卓开发。非常遗憾,现在重新开始,我任是一个爱学新技术的追风少年。我的学习方法是:看语法讲解看代码修改代码或者自己实现......
  • Redis数据类型及存取命令
    理想三旬浓烟下,奔赴山海与荒野一,Redis常用五种数据类型及存取命令1,字符串(String)1#设置字符串的值2SETkeyvalue34#获取字符串的值5GETkey2,列表(List)1#在列表左侧添加一个元素2LPUSHkeyvalue34#在列表右侧添加一个元素5RPUSHkeyvalue67#获......
  • shell特殊符号梳理
    1$相关关键词shell中与@和n等经常被使用,但是有时候仍然对部分符号记忆不是很深刻,特地整理成表格方便记忆。-描述备注$0当前脚本文件名$n传递给脚本或函数的参数$#传递给脚本或函数的所有参数个数$*传递给脚本或函数的所有参数当它们被双引号("“)包含时,”$*"会将所有的参数作为......
  • 你说啥?Redis中除了五大数据类型,还有特殊数据类型!
    一、geospatial地理位置1.1>概述可以用于基于地理位置的业务场景。比如:查询两地之间的距离,方圆几里存在的地理位置等等。Redis提供了geospatial相关的8个指令,操作如下图所示:1.2>GEOADD(v3.2.0)指令格式:GEOADDkeylongitudelatitudemember[longitudelatitudemember...]指令含......
  • 数据类型——基本数据类型
    基本数据类型整数字符       ——char     (1个字节)短整型   ——short(2个字节)整型      ——int (取决于编译器(cpu)通常是一个字,4个字节)长整型   ——long(取决于编译器(cpu),32位是4个字节,64位是8个字节)longlong(C99)浮点数......
  • < Python全景系列-2 > Python数据类型大盘点
    欢迎来到我们的系列博客《Python全景系列》!在这个系列中,我们将带领你从Python的基础知识开始,一步步深入到高级话题,帮助你掌握这门强大而灵活的编程语法。无论你是编程新手,还是有一定基础的开发者,这个系列都将提供你需要的知识和技能。Python作为一门强大且灵活的编程语言,拥有丰富......
  • python 基本数据类型以及内置方法(有这一篇就够了)
    一、数据类型介绍在Python中,数据类型是区分数据的种类和存储方式的标识符。它定义了数据的取值范围、占用空间大小、可操作特性等。Python中常见的数据类型包括数字、字符串、列表、元组、集合和字典等。数据类型在编程中的作用主要有以下几个方面:内存空间的管理:不同的数据......
  • "输出美元符号:$ <br>"; //转义或者不转义都可
    <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd"><html><head><title>single_str.php</title><metacharset="UTF-8"><m......