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

sbyte数据类型

时间:2024-02-01 21:02:14浏览次数:18  
标签:sbyte 符号 数据类型 WriteLine 127 128 Console

sbyte表示一种整型数据,它的范围是-128到+127,它是一个有符号的8位整数,在.NET中与之对应的是System.Sbyte。

C#中的byte类型的范围是0-255。它们两者都只能表示256个数值,只不过,一个有符号,一个没有符号。为什么有符号的sbyte的范围是-128到+127呢?

首先8位的二进制数据的范围本来应该是00000000-11111111,然后我们分两种情况来讨论。

第一种情况,在无符号的byte类型二进制数据中,直接将00000000视为0(十进制),将11111111视为255(十进制)。

第二种情况,在有符号的sbyte类型中,左边第一位表示符号位,0表示正数,1表示负数,所以01111111表示一个sbyte最大的正数,也就是127。而负数的二进制在计算机中表示为正数的补码,补码等于反码加1,所以128的反码用二进制表示是01111111,再加1得到补码为10000000。注意,10000000在无符号二进制状态下,它本来是128,而在有符号数中,通常将最高有效位为0的认为是正数,最高有效位为1的认为是负数,因此1000 0000就表示为-128了。所以8位有符号整数的范围是-128~127

观察下面这个例子

internal class Program
 
 {
 
     static void Main(string[] args)
 
     {
 
         sbyte min_sbyte = -128;
 
         SByte max_sbyte = 127;
 
  
 
         Console.WriteLine($"min_sbyte={min_sbyte}");
 
         Console.WriteLine($"max_sbyte={max_sbyte}");
 
         Console.WriteLine($"MinValue ={sbyte.MinValue}");
 
         Console.WriteLine($"MaxValue ={sbyte.MaxValue}");
 
  
 
         short a = -129;
 
         sbyte age = (sbyte)a;
 
         Console.WriteLine($"将-129转为sbyte={age}");
 
  
 
         short b = +128;
 
         age = (sbyte)b;
 
         Console.WriteLine($"将+128转为sbyte={age}");            
 
  
 
         var v = Console.ReadKey();
 
     }
 
 }

输出结果:

min_sbyte=-128
max_sbyte=127
MinValue =-128
MaxValue =127
将-129转为sbyte=127
将+128转为sbyte=-128

为什么将-129转为sbyte=127?将+128转为sbyte=-128?这里和上一节关于byte的超出范围转换是一样的道理。

比如+128这个数,二进制表示为10000000,由于第一位表示为符号位,所以10000000=-0,-0就看成是sbyte的最小值,可不就是-128嘛。


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

标签:sbyte,符号,数据类型,WriteLine,127,128,Console
From: https://blog.51cto.com/wpfsoft/9536234

相关文章

  • 什么是数据类型
    一、基本概念首先,数据类型应该拆开来理解,分别是数据和类型。我们先讲什么是数据,本质上是计算机内存中的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......
  • 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......
  • Oracle数据类型的简单学习之一
    Oracle数据类型的简单学习之一背景因为信创安可替代的发展有很多项目提到了数据库切换到国产数据库的要求.一般情况是要求从Oracle/SQLServer迁移到国产的:达梦/瀚高/人大金仓/南大通用等数据库.但是因为Oracle作为数据库领域No.1的存在他对SQL的规范标准支持的并不是很......
  • Go - 基本数据类型和其字符串表示之间转换
    1.基本数据类型和其字符串表示之间转换基本类型的值,都有一个字符串表示,如数字类型值1字符串表示为"1",字符的编码为Unicode或者UTF-8,数字的编码是int,底层存储的数据格式本质上不一样,基本类型的转换本质上只是文法语义上的转化1.1Go语言基本类型整数:有符号intint8i......