C# 字节到底是什么?它与二进制有什么关系?

C# 字节到底是什么?它与二进制有什么关系?,c#,binary,byte,bit,C#,Binary,Byte,Bit,我只是在学习二进制和字节。我知道8位组成一个字节,一个字节可以有256种可能性。我感到困惑的是: byte[] b = new byte[] { 85, 85, 67, 75 }; 85或以上任何数字与二进制有什么关系。在我的脑海中有一些东西没有完全点击。A在C#中只是一个8位整数值。在上面,您在一个数组中表示4个数字-这与使用int时没有什么不同,只是这些数字占用内存总空间的1/4 它实际上与“二进制”无关,只是它是二进制数据最常用的表示形式。这是因为大多数系统一次只处理一个“字节”,这是一

我只是在学习二进制和字节。我知道8位组成一个字节,一个字节可以有256种可能性。我感到困惑的是:

byte[] b = new byte[] { 85, 85, 67, 75 };
85或以上任何数字与二进制有什么关系。在我的脑海中有一些东西没有完全点击。

A在C#中只是一个8位整数值。在上面,您在一个数组中表示4个数字-这与使用int时没有什么不同,只是这些数字占用内存总空间的1/4

它实际上与“二进制”无关,只是它是二进制数据最常用的表示形式。这是因为大多数系统一次只处理一个“字节”,这是一个8位的数据块。因此,如果要处理原始二进制信息,字节是表示此数据的常用方式


该类具有从字节数组到其他类型再到其他类型的例程。例如,它可以估值,也可以反过来。请记住-所有存储的数据都是内存-您只需按特定顺序保存一系列位(1和0),系统将以特定方式解释这些数据。

这些只是数字。它们与二进制本身无关。但是,如果您选择了-例如,在基数2中75=01001011,则可以用二进制编写它们


因此,这里的
byte
只是一种数据类型,可以保存256个可能值中的一个。通常将其解释为0到255之间的数字或8个二进制数字(即8个开/关值)。这只是看待同一事物的两种方式。

二进制是事物在计算机中的存储方式。1与0、开与关、真与假、电流的存在与否。给它一个相当彻底的治疗


在您的示例中,类似于“85”的表示是一个字节是如何格式化的,以方便我们作为人类读者。它的格式可以是十六进制(以16为基数)为“55”,八进制(以8为基数)为“125”,二进制为“1010101”,如果你愿意的话,甚至可以是以84为基数的“11”。所有的意思都是一样的

数组中的每个数字都小于256。它们被转换成二进制字节。这只是它们的十进制表示。

该语句声明了一个字节数组,并为其分配了4个元素——每个元素的大小(理论上!)都是一个字节。该数组中存储的实际值(85、86、67、75)都是可以放入单个字节的值。在代码示例中,这些值以十进制形式表示。一旦你的代码被翻译成可执行的形式,这些值最终会被你的计算机以二进制的形式看到,从一个寄存器到另一个寄存器,推送,弹出,积累,等等

您可以在源代码中的其他基中表示值-例如十六进制或十六进制,这比十进制更接近金属,相应地,你的思维过程可以很容易地在人类的表现和你的代码实际所说的之间移动,因为实际上在十六进制和二进制之间没有实际的数学关系;另一个很好的例子是八进制

或者您可以这样想:使用与您正在做的事情最相关的基来表示代码中的值。如果您将权限或颜色值组合在一起,则为十六进制或八进制;如果你在计算支票账户的利息,那么显而易见的选择是十进制

现在,对于你的特定代码片段——如果你处理单个字符或将原始信息写入块设备,字节数组可能是很好的。但是,当你成为编译器的一个时,你的大脑最终会认为HEX更容易处理表示。

< P> 85只是一个数字的小数(即“基10”)。这意味着:

8*10^1+5*10^0

=8*10+5*1

=80+5

=85

但是,您可以选择任何基数来表示数字。美国人类有10个手指,这可能是日常使用的“基数10”系统的起源,但在计算机的物理电路中无法表示10个不同的数字。该电路只了解电子的缺失与电子的存在-即只有两位数,因此是二进制

因此,虽然您可以在程序的源代码中写入十进制85(以使其对人类更自然),但它最终会在计算机中表示为二进制1010101,等于

1*2^6+0*2^5+1*2^4+0*2^3+1*2^2+0*2^1+1*2^0

=1*64+0*32+1*16+0*8+1*4+0*2+1*1

=64+16+4+1

=85


顺便说一句,十进制系统不与二进制“对齐”-单个十进制数字不能用二进制数字的“整数”表示,而十进制整数与二进制整数不匹配。例如:

  • 10(十进制)=1010(二进制)
  • 100(十进制)=1100100(二进制)
  • 1000(十进制)=1111101000(二进制)
  • 等等
有时,使用与二进制“对齐”的数字系统很方便,例如(一个八进制数字正好是3个二进制数字)或(一个十六进制数字正好是4个二进制数字)

重要的一点是,所有这些系统最终都会在计算机中表示为二进制


旁注:“十六进制”过去是“sexa-decimal”,但显然冒犯了一些清教徒的敏感性;)

“没有问题太简单了”。“没有问题太简单了”。“没有问题太简单了”。它不工作。
85
二进制
无关,因为它是
十进制
<代码>85基数10=
1010101基数2
。这只是一种表达方式