Fra*_*e J 8 c# binary byte bit
我只是在学习二进制和字节.据我所知,8位组成一个字节,一个字节可以有256种可能性.我很困惑的是这个:
byte[] b = new byte[] { 85, 85, 67, 75 };
Run Code Online (Sandbox Code Playgroud)
85或以上任何数字与二进制有什么关系.我脑子里根本没有完全点击的东西.
Bob*_*man 12
二进制是计算机中存储内容的方式.0和0,开关,真假,是否存在电流.这篇维基百科文章为其提供了相当彻底的处理.
在您的示例中,类似"85"的表示形式是为了方便读者而将字节格式化的方式.它可以用十六进制(基数16)格式化为"55",八进制格式(基数8)格式为"125",二进制格式为"1010101",如果你是如此倾向,甚至格式为"11".一切都意味着同样的事情.
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
顺便说一句,十进制系统并不与二进制“对齐” - 单个十进制数字不能由“整个”二进制数字表示,并且舍入十进制数与舍入二进制数不能很好匹配。例如:
有时,使用与二进制“对齐”的数字系统会很方便,例如八进制(一个八进制数字恰好是 3 个二进制数字)或十六进制(一个十六进制数字恰好是 4 个二进制数字)。
重要的一点是,所有这些系统最终都会在计算机中表示为二进制。
旁注:“十六进制”曾经是“六进制”,但显然冒犯了一些清教徒的敏感性;)
归档时间: |
|
查看次数: |
710 次 |
最近记录: |