首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >建议读取位/字节和用于执行操作的示例代码等

建议读取位/字节和用于执行操作的示例代码等
EN

Stack Overflow用户
提问于 2008-10-15 20:59:44
回答 4查看 703关注 0票数 2

需要复习一下位/字节、十六进制符号以及它与编程的关系(C#优先)。

寻找一个好的阅读清单(最好是在线的)。

EN

回答 4

Stack Overflow用户

发布于 2009-07-15 00:05:23

这里有几个层次需要考虑:

  • Electronic

在电子范式中,一切都是一根电线。

一根导线代表一个比特。

0为低电压,1为高压。电压可以是[0,5], [-3.3, 3], [-5, 5], [0, 1.3]等。关键是只有两个电压电平来控制晶体管的动作。

一个字节是一个连接的集合(准确地说,它可能被收集在一组称为寄存器的触发器中,但现在让我们将其保留为“连接”)。

  • Programming

位是0或1。

在现代系统中,一个字节是8位。古老的系统可能有10位字节或其他大小;它们现在已经不存在了。

一个nybble是4位;半个字节。

十六进制是8位的有效表示。例如:f映射到1111 1111。这比写15更有效。另外,如果你写下多个字节值,这是非常清楚的: FF是明确的;1515可以用几种不同的方式读取。

在历史上,八进制也被使用(以8为基数)。然而,我遇到它的唯一地方是在Unix权限中。

由于在电子层上,以2^n为一组收集内存是最有效的,因此十六进制是表示内存的自然表示法。此外,如果您碰巧在驱动程序级别工作,则可能需要专门控制给定位,这将需要使用位级运算符。如果你说的是F & outputByte而不是15 & outputByte,那么HI上的字节是很清楚的。

一般来说,许多现代编程不需要关注二进制和十六进制。然而,如果你在一个你需要知道它的地方,就不会有任何闪失--你真的需要知道它。

需要二进制知识的特殊领域包括:嵌入式系统、驱动程序编写、操作系统编写、网络协议和压缩算法。

虽然您想要的是C#,但C#确实不是用于位级操作的正确语言。传统上,C和C++是用于位工作的语言。Erlang使用位操作,Perl也支持它。VHDL是完全面向位的,但从典型编程的角度来看,使用VHDL相当困难。

下面是一些用于执行不同逻辑操作的示例C代码:

代码语言:javascript
运行
复制
char a, b, c;  
c = a ^ b;      //XOR
c = a & b;      //AND
c = a | b;      //OR
c = ~(a & b);   //NOT AND(NAND)
c = ~a;         //NOT
c = a << 2;     //Left shift 2 places
c = a >> 2;     //Right shift 2 places.
票数 2
EN

Stack Overflow用户

发布于 2008-10-15 21:10:25

位不是1就是0。

一个字节是8位。

十六进制中的每个字符都是4位,表示为0-F

  • 0000 is 0
  • 0001 is 1
  • 0010 is 2
  • 0011 is 3
  • ...
  • 1110 is E
  • 1111 is F

C#的比特吞噬操作here有一个非常好的介绍

票数 0
EN

Stack Overflow用户

发布于 2008-10-15 21:13:18

下面是一些基本的读物:http://www.learn-c.com/data_lines.htm

位和字节几乎从不与C#相关,因为CLR自己处理内存。框架中也有处理十六进制符号和所有这些东西的类和方法。但是,它仍然是一个有趣的阅读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/206469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档