建议读取BITS / Bytes和示例代码以执行操作等

时间:2008-10-15 20:59:44

标签: binary byte hex

需要更新位/字节,十六进制表示法以及它与编程的关系(C#首选)。

寻找一个好的阅读清单(最好在网上)。

4 个答案:

答案 0 :(得分:2)

这里有几个层要考虑:

  • 电子

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

单根线代表一位。

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

一个字节是一组线路(准确地说,它可能是在一组称为寄存器的触发器中收集的,但现在让我们把它留作“线”)。

  • 编程

位为0或1.

在现代系统中,一个字节是8位。古代系统可能有10位字节或其他大小;他们今天不存在。

nybble 是4位;半个字节。

十六进制是8位的有效表示。例如:F 映射到1111 1111。这比写入15更有效。此外,如果您正在写下多个字节值,则非常清楚:FF是明确的; 1515可以通过几种不同的方式阅读。

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

由于在电子层上,收集内存最为有效 在2 ^ n的组中,十六进制是用于表示的自然符号 记忆。此外,如果您碰巧在驾驶员级别工作,您可以 需要专门控制给定位,这将需要使用 位级运算符。很明显,如果你说,哪些字节在HI上 F & outputByte15 & outputByte

一般来说,现代编程很多都不需要关注自己 二进制和十六进制。但是,如果你在某个地方 需要知道它,没有滑倒 - 你真的需要知道 然后呢。

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

虽然你想要C#,但C#真的不是比特级的正确语言 操纵。传统上,C和C ++是用于bit的语言 工作。 Erlang使用位操作,Perl支持它 好。 VHDL完全是面向位的,但是很难工作 从典型的编程角度来看。

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

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.

答案 1 :(得分:0)

一位是1或0。

一个字节是8位。

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

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

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

答案 2 :(得分:0)

以下是一些基本阅读:http://www.learn-c.com/data_lines.htm

比特和字节几乎与C#无关,因为CLR自己处理内存。还有处理十六进制表示法的类和方法以及框架中的所有这些东西。但是,它仍然是一个有趣的阅读。

答案 3 :(得分:0)

Write Great Code是这个主题的一本很好的入门读物......让你从裸机到高阶语言。