需要更新位/字节,十六进制表示法以及它与编程的关系(C#首选)。
寻找一个好的阅读清单(最好在网上)。
答案 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 & outputByte
比15 & 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
C#的比特咀嚼操作有一个非常好的介绍here
答案 2 :(得分:0)
以下是一些基本阅读:http://www.learn-c.com/data_lines.htm
比特和字节几乎与C#无关,因为CLR自己处理内存。还有处理十六进制表示法的类和方法以及框架中的所有这些东西。但是,它仍然是一个有趣的阅读。
答案 3 :(得分:0)
Write Great Code是这个主题的一本很好的入门读物......让你从裸机到高阶语言。