首页 > 其他分享 >byte数据类型

byte数据类型

时间:2024-02-01 21:02:29浏览次数:18  
标签:short Console age 数据类型 byte 256 255

byte是我们学习的第一个数据类型,表示一个8位无符号整数,也表示一个字节。在计算机中,一个字节的长度是8位(bit)。byte类型的范围是0~255,转换为二进制是00000000~11111111。

C#中byte对应的.NET数据类型是System.Byte。

声明和初始化

我们可以使用.NET提供的关键字声明一个Byte变量,也可以使用C#关键字声明一个byte变量,两者在内存上的长度和特性是一致的。例如:

byte age = 18;
 
 Byte money = 18;

byte的范围被定义在0-255当中,我们可以从它的源代码中找到这一点。或者直接输出范围的最小值和最大值。

public const byte MaxValue = 255;
 
 public const byte MinValue = 0;
internal class Program
 
 {
 
     static void Main(string[] args)
 
     {
 
         byte age = 18;
 
         Byte money = 99;
 
  
 
         Console.WriteLine($"age={age}");
 
         Console.WriteLine($"money={money}");
 
         Console.WriteLine($"MinValue ={byte.MinValue}");
 
         Console.WriteLine($"MaxValue ={byte.MaxValue}");
 
  
 
         var v = Console.ReadKey();
 
     }
 
 }

输出如下:

age=18
money=99
MinValue =0
MaxValue =255

我们已知byte能存储的数值范围是0-255,那么,假如我们给它赋值-1,0,255,256这4个数值,然后将它们打印出来,结果又如何呢?

byte数据类型_模运算

当我们给变量age赋值为-1时,提示常量值-1无法转换为byte。同理,给age赋值256时,由于超过了255的限制,提示常量值256无法转换为byte。

byte数据类型_数据类型_02

说明编译器至少在程序员编码时,做了一定的错误限制。别急,我们还有别的办法可以实现这一测试。

short a = -1;
 
 age = (byte)a;
 
 Console.WriteLine($"将-1转为byte={age}");
 
  
 
 short b = 256;
 
 age = (byte)b;
 
 Console.WriteLine($"将256转为byte={age}");
 
  
 
 short c = 257;
 
 age = (byte)c;
 
 Console.WriteLine($"将257转为byte={age}");

因为short型的数据可以表示的范围是-32768到32767,所以我们可以先定义一个short变量,然后通过类型转换,将其转换成byte型,最后结果如下

将-1转为byte=255
将256转为byte=0
将257转为byte=1

我们先打个比方,byte就好比星巴克的小杯,比如可以容纳100毫升的咖啡,short就好比大杯,可以容纳500毫升的咖啡,现在大杯装有150毫升的咖啡,我们强制全部倒进小杯中,当这个过程结束后,小杯中的咖啡有多少毫升?

在现实中,此时小杯里面有100毫升的咖啡,还溢出了50毫升,散落在桌上。而在计算机当中,答案却相反,将一个256的数值存到byte里面,得到的答案是0,将257的数值装到byte里面,得到的答案是1。这是为什么呢?

short在内存中占2个字节,byte在内存中只占1个字节,将大杯里面的咖啡倒进小杯里面,这会造成精度损失,或者数据丢失。计算机在处理这种情况时,会通过一个计算公式,如上面这个例子:256%256=0,所以将256赋值给byte时,得到结果为0,257%256=1,所以得到结果为1。

也就是说short和byte求模运算(白话:short除以byte得到余数),将这个求模运算的余数结果保存到byte当中。由此我们可以得如下推论:在下列等式中,左边是short型,右边是byte型。

  • ...
  • -3 = 253
  • -2 = 254
  • -1 = 255
  • 0 = 0
  • 1 = 1
  • 2 = 2
  • 3 = 3
  • 253 = 253
  • 254 = 254
  • 255 = 255
  • 256 = 0
  • 257 = 1
  • 258 = 2
  • 259 = 3
  • ...

怎么去快速理解它们之间的转换关系呢?

等式

换算关系

换算关系

-3 = 253

-3 % 256 =253

-3=(-1)*256+253

-2 = 254

-2 % 256 =254

-2=(-1)*256+254

-1 = 255

-1 % 256 =255

-1=(-1)*256+255

0 = 0

0 % 256 =0

0=(+0)*256+0

1 = 1

1 % 256 =1

1=(+0)*256+1

2 = 2

2 % 256 =2

2=(+0)*256+2

3 = 3

3 % 256 =3

3=(+0)*256+3

253 = 253

253 % 256 =253

253=(+0)*256+253

254 = 254

254 % 256 =254

254=(+0)*256+254

255 = 255

255 % 256 =255

255=(+0)*256+255

256 = 0

256 % 256 =0

256=(+1)*256+0

257 = 1

257 % 256 =1

257=(+1)*256+1

258 = 2

258 % 256 =2

258=(+1)*256+2

259 = 3

259 % 256 =3

259=(+1)*256+3


——重庆教主 2023年12月25日

标签:short,Console,age,数据类型,byte,256,255
From: https://blog.51cto.com/wpfsoft/9536229

相关文章

  • sbyte数据类型
    sbyte表示一种整型数据,它的范围是-128到+127,它是一个有符号的8位整数,在.NET中与之对应的是System.Sbyte。C#中的byte类型的范围是0-255。它们两者都只能表示256个数值,只不过,一个有符号,一个没有符号。为什么有符号的sbyte的范围是-128到+127呢?首先8位的二进制数据的范围本来应该是00......
  • 什么是数据类型
    一、基本概念首先,数据类型应该拆开来理解,分别是数据和类型。我们先讲什么是数据,本质上是计算机内存中的0和1,由于计算机存储的基本单位是字节(byte),最小单位是位(bit),一个节字等于8位,这些都是计算机客观存在的概念。所以,byte在计算机占8个位,bit在计算机中占1个位,由于这两个家伙所占的存......
  • C#的基础数据类型
    C#语言在.NET基元类型的基础上,也编制了一份数据类型。所以,将来我们在开发C#程序时,声明基础数据类型,其实就有两种写法。它们的对应如下表所示。.NET数据类型C#数据类型说明范围System.SBytesbyte8位有符号整数类型-128到127System.Bytebyte8位无符号整数0到255System.Int16sho......
  • Python中的基础数据类型:List、Tuple和Dict及其常用用法简析
    在Python编程语言中,基础数据类型是构建程序的基本元素。这些基础数据类型包括List(列表)、Tuple(元组)和Dict(字典)。每种数据类型都有其特定的用途和特性,了解并掌握它们对于编写高效、可维护的Python代码至关重要。本文将深入探讨这三种基础数据类型,并通过代码示例展示它们的常用用法。......
  • 数据类型及其拓展
    数据类型强类型语言要求变量的使用的严格符合规定,所有的变量都必须先定义后才能使用publicclassDemo02{publicstaticvoidmain(String[]args){Stringa="Hello";intnum=10;System.out.println(a);System.out.println(n......
  • 数据类型
    数据类型强类型语言要求变量的使用的严格符合规定,所有的变量都必须先定义后才能使用publicclassDemo02{publicstaticvoidmain(String[]args){Stringa="Hello";intnum=10;System.out.println(a);System.out.println(n......
  • 火山引擎ByteHouse:分析型数据库如何设计并发控制?
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群分析型数据库设计并发控制的主要原因是为了确保数据的完整性和一致性,同时提高数据库的吞吐量和响应速度。并发控制可以防止多个事务同时对同一数据进行修改,导致数据不一致的情况发生。通过合......
  • Go语言的100个错误使用场景(11-20)|项目组织和数据类型
    目录前言2.Codeandprojectorganization2.11没有使用函数式选项模式(#11)2.12项目缺乏组织(#12)2.13创建公共设施包(#13)2.14忽略包名的冲突(#14)2.15代码文档缺失(#15)2.16不使用code-linter(#16)3.Datatypes3.1八进制产生的混乱局面(#17)3.2忽略整型溢出(#18)3.3不理解浮点数(#19)3......
  • [转帖]SQL SERVER--- 排序规则、数据类型
    https://zhuanlan.zhihu.com/p/162933497 一、排序规则有时候我们向数据库插入文本时,会出现乱码“?”,这时有可能是我们创建数据库没有设置好排序规则以Chinese_PRC_CI_AS为例前半部分Chinese_PRC指的是针对大陆简体字unicode的排序规则后半部分的含义为:_BIN二进......
  • 四、python数据类型的性能
    四、python数据类型的性能比较列表list和字典dict两种内置数据类型上各种操作大O数量级两种都属于容器,都是可变类型。类型listdict索引自然数i不可变类型值key添加append/extend/insertb[k]=v删除pop/removepop更新a[i]=vb[k]=v正查a[i]/a[i......