精华内容
下载资源
问答
  • 通信原理课程设计题 目:二进制差分相移键控(2DPSK)信号发生器的设计(载波发生器部分)院 (系): 电子信息学院班 级: 通信081姓 名: ��� ��� �� ��� ��...

    通信原理课程设计

    题 目:二进制差分相移键控(2DPSK)信号发生器的设计(载波发生器部分)

    院 (系): 电子信息学院

    班 级: 通信081

    姓 名: ��� ��� �� ��� ��

    0 0 0 0 0

    0 0 0 0 0

    学 号:008010467000000000000000000000000000000000000

    指导教师: ���

    1

    目 录

    摘要3

    关键词3

    一、实现框图3

    二、系统介绍3

    1、载波发生器3

    2、 数据源3

    3、 差分调相器3

    三、 载波发生器设计3

    四、 实验设计6

    4.1、电路图设计6

    4.2做板6

    4.3测试7

    五、 设计中遇到的问题8

    六、心得体会8

    附 录9

    2

    摘要:2DPSK调制是数字调制系统中基本调制方式之一,是学习新型数字调试

    技术的重要基础。

    关键词:二进制差分相移键控 差分调相 载波

    一、实现框图

    1-1

    1-1

    (图11--11 实现框图)

    二、系统介绍

    二进制差分相移键控(2DPSK)信号发生器分成三个模块来完成,分别为:

    数据源模块、差分调相器模块、载波发生器模块;从数据模块得到码元速率为

    2400B 31

    的 位伪随机码输入到差分调相器调制载波,载波模块则是由

    11.0592MHz 晶振分频得来的 19.2KHz 方波;二者通过差分调相以后则生成

    2DPSK信号。

    1

    1

    11、载波发生器

    依据题目要求通过11.0592MHz的晶振分频以后得到19.2KHz的方波;

    2

    2

    22、数据源

    1 1 D

    通过对从载波发生器的方波进行分频可得到所需的 : 方波;利用 触发器组

    31

    成移位寄存器来组成 位伪随机码;

    3、差分调相器

    7 JK

    通过利用 位二进制计数器和 触发器来产生差分编码器,然后再利用或非门

    来组建调相器

    三、载波发生器设计

    通过所给的元件,初步确定是用晶振分频来得到所需要的频率19.2KHz的方

    波;由于

    11.05926MHz=576*19.2KHz (3-1)

    576 19.2KHz;

    因此可以构成 位计数器来完成分频得到

    1

    1

    11、方案一

    3

    通过用74161 的级联来达到576 位计数器,通过划算576 的二进制为10 0100

    0000 ,根据其二进制数,级联74161 得到如下图所示的576 位进制计数器,为

    3 74161 JK 7

    了满足其条件,因选用 块

    展开全文
  • 二进制与字符编码

    2016-08-21 21:06:00
    十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。 二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一...

    进制

    进制也就是进位制,是人们规定的一种进位方法。 对于任何一种进制---X进制,就表示某一位置上的数运算时是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

    二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

    20世纪被称作第三次科技革命的重要标志之一的计算机的发明与应用,因为数字计算机只能识别和处理由‘0’.‘1’符号串组成的代码。其运算模式正是二进制。19世纪爱尔兰逻辑学家乔治布尔对逻辑命题的思考过程转化为对符号"0''.''1''的某种代数演算,二进制是逢2进位的进位制。0、1是基本算符。因为它只使用0、1两个数字符号,非常简单方便,易于用电子方式实现。

     

    十进制:  逢十进一              表示数字: 0123456789

    二进制:逢二进一                表示数字: 0 1 

    八进制: 逢八进一               表示数字: 01234567

    作用: 在某些编程语言里提供了使用八进制符号来表示数字的能力,而且还是有一些比较古老的Unix应用在使用八进制。和二进制之间的转换: 2-->8 :  取三合一     8-->2 : 取一分三

    十六进制: 逢十六进一         表示数字: 01234567ABCDEF 

     

    字符编码

     

    字符编码(英语:Character encoding)也称字集码,是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数序列、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特,以便于以1个字节的方式存储。

    在计算机技术发展的早期,如ASCII(1963年)和EBCDIC(1964年)这样的字符集逐渐成为标准。但这些字符集的局限很快就变得明显,于是人们开发了许多方法来扩展它们。对于支持包括东亚CJK字符家族在内的写作系统的要求能支持更大量的字符,并且需要一种系统而不是临时的方法实现这些字符的编码。

    ASCII

    美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符

    ASCII(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值。

    ASCII码于1961年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。比较EBCDIC。其中95个字符可以显示。另外33个不可以显示。 标准ASCII码为7位,扩充为8位。

    目前使用最广泛的西文字符集及其编码是 ASCII 字符集和 ASCII 码( ASCII 是 American Standard Code for Information Interchange 的缩写),它同时也被国际标准化组织( International Organization for Standardization, ISO )批准为国际标准。

    基本的 ASCII 字符集共有 128 个字符,其中有 96 个可打印字符,包括常用的字母、数字、标点符号等,另外还有 32 个控制字符。标准 ASCII 码使用 7 个二进位对字符进行编码,对应的 ISO 标准为 ISO646 标准。下表展示了基本 ASCII 字符集及其编码:

    字母和数字的 ASCII 码的记忆是非常简单的。我们只要记住了一个字母或数字的 ASCII 码(例如记住 A 为 65 , 0 的 ASCII 码为 48 ),知道相应的大小写字母之间差 32 ,就可以推算出其余字母、数字的 ASCII 码。

    虽然标准 ASCII 码是 7 位编码,但由于计算机基本处理单位为字节( 1byte = 8bit ),所以一般仍以一个字节来存放一个 ASCII 字符。每一个字节中多余出来的一位(最高位)在计算机内部通常保持为 0 (在数据传输时可用作奇偶校验位)。

    由于标准 ASCII 字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了 ISO2022 标准,它规定了在保持与 ISO646 兼容的前提下将 ASCII 字符集扩充为 8 位代码的统一方法。 ISO 陆续制定了一批适用于不同地区的扩充 ASCII 字符集,每种扩充 ASCII 字符集分别可以扩充 128 个字符,这些扩充字符的编码均为高位为 1 的 8 位代码(即十进制数 128~255 ),称为扩展 ASCII 码。

    通过了解字符的存储编码,可以解决很多由编码不匹配引起的问题,比如网页乱码、邮件乱码,本文简单扼要地阐明了ASCII编码、EBCDIC编码、GB2312编码、Unicode编码、UTF-8编码、以及Base64编码。

    编码

    这套编码叫ASCII(美国(国家)信息交换标准(代)码),使用7个或8个二进制位进行编码的方案,最多可以给256个字符。使用了ASCII码,不同的计算机之间就可以实现数据的标准化。
    但是ASCII使用的时候有一些限制。他最多之可以表示256个字符。如果有其他的字符就无能为力了。ASCII只能表示26个基本的拉丁字母、阿拉伯数字和英式标点。因此也只能用于显示现代美国英语。
    后来计算机世界开始有了其他语言,ASCII码已经无法满足需求。后来不同语言的人各自为自己定制了一套属于自己的编码,同时与ASCII保持兼容。这些编码统称MBCS,到了这里大家都开始好似用双字节。(中国的叫GB*,比如GBK).
    在后来有人开始觉得,这么多编码,有些编码之间还不兼容,太让人头大了,于是有这么一群人就坐在一起想出了一个办法:所有的语言都使用同一种编码,这种编码就是Unicode。 Unicode使用最少2个字节(1个字节=1BYTE=8bit=一个长度为8的二进制数) 来表示字母和符号等,有时候是4个字节。这样就解决了上面遇到的问题。
    Unicode又叫万国码,是业界的一种标准。但是有人又觉得如果我要表示一个ASCII里的字符,使用unicode来表示不是太浪费空间了吗,于是就有人想出了另外一种解决方案——UTF-8。
    UTF-8是对Unicode编码的压缩和优化,最大的特点是它采用了变长的编码方式,他不再是最少使用2个字节,而是将所有的字符进行分类。ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存…

    GB2312是1980年国家制定的汉字内码规范,收录了6千多汉字及符号,表示的符号有限 ;国家标准化委员会又制定了GB13000,GB13000制定的原则与GB2312不同,GB13000以国际化为目标, 该标准编码参照了Unicode 2.0 标准编码,与GB2312完全不兼容,因早期的计算机中的汉卡采用了GB2312,无法顺利向GB13000过渡,所以GB13000变成了一个纸面上的 标准,无法推广-;有了这个经验之后,国家标准化委员会制定了GBK标准,他兼容GB2312标准,同时在GB2312标准的基础上扩展了GB13000包含的字。

    MBCS

    为了扩充ASCII编码,以用于显示本国的语言,不同的国家和地区制定了不同的标准,由此产生了 GB2312, BIG5, JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,称为 ANSI 编码,又称为"MBCS(Muilti-Bytes Charecter Set,多字节字符集)"。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码,所以在中文 windows下要转码成gb2312,gbk只需要把文本保存为ANSI 编码即可。 不同 ANSI 编码之间互不兼容,当信息在国际间交流时,无法将属于两种语言的文字,存储在同一段 ANSI 编码的文本中。一个很大的缺点是,同一个编码值,在不同的编码体系里代表着不同的字。这样就容易造成混乱。导致了unicode码的诞生。

    其中每个语言下的ANSI编码,都有一套一对一的编码转换器,Unicode变成所有编码转换的中间介质。所有的编码都有一个转换器可以转换到Unicode,而Unicode也可以转换到其他所有的编码。

    GB2312

    GB2312 也是ANSI编码里的一种,对ANSI编码最初始的ASCII编码进行扩充,为了满足国内在计算机中使用汉字的需要,中国国家标准总局发布了一系列的汉字字符集国家标准编码,统称为GB码,或国标码。其中最有影响的是于1980年发布的《信息交换用汉字编码字符集 基本集》,标准号为GB 2312-1980,因其使用非常普遍,也常被通称为国标码。GB2312编码通行于我国内地;新加坡等地也采用此编码。几乎所有的中文系统和国际化的软件都支持GB 2312。

    GB2312是一个简体中文字符集,由6763个常用汉字和682个全角的非汉字字符组成。其中汉字根据使用的频率分为两级。一级汉字3755个,二级汉字3008个。由于字符数量比较大,GB2312采用了二维矩阵编码法对所有字符进行编码。首先构造一个94行94列的方阵,对每一行称为一个“区”,每一列称为一个“位”,然后将所有字符依照下表的规律填写到方阵中。这样所有的字符在方阵中都有一个唯一的位置,这个位置可以用区号、位号合成表示,称为字符的区位码。如第一个汉字“啊”出现在第16区的第1位上,其区位码为1601。因为区位码同字符的位置是完全对应的,因此区位码同字符之间也是一一对应的。这样所有的字符都可通过其区位码转换为数字编码信息。

    GB2312字符在计算机中存储是以其区位码为基础的,其中汉字的区码和位码分别占一个存储单元,每个汉字占两个存储单元。由于区码和位码的取值范围都是在1-94之间,这样的范围同西文的存储表示冲突。例如汉字‘珀’在GB2312中的区位码为7174,其两字节表示形式为71,74;而两个西文字符‘GJ’的存储码也是71,74。这种冲突将导致在解释编码时到底表示的是一个汉字还是两个西文字符将无法判断。

    为避免同西文的存储发生冲突,GB2312字符在进行存储时,通过将原来的每个字节第8bit设置为1同西文加以区别,如果第8bit为0,则表示西文字符,否则表示GB2312中的字符。实际存储时,采用了将区位码的每个字节分别加上A0H(160)的方法转换为存储码,计算机存储规则是此编码的补码,而且是位码在前,区码在后。

    GB2312编码用两个字节(8位2进制)表示一个汉字,所以理论上最多可以表示256×256=65536个汉字。但这种编码方式也仅仅在中国行得通,如果您的网页使用的GB2312编码,那么很多外国人在浏览你的网页时就可能无法正常显示,因为其浏览器不支持GB2312编码。当然,中国人在浏览外国网页(比如日文)时,也会出现乱码或无法打开的情况,因为我们的浏览器没有安装日文的编码表。

    GBK

    GBK即汉字内码扩展规范,K为扩展的汉语拼音中“扩”字的声母。英文全称Chinese Internal Code Specification。GBK编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集——基本集》,1980年由国家标准总局发布。基本集共收入汉字6763个和非汉字图形字符682个,通行于中国大陆。新加坡等地也使用此编码。GBK是对GB2312-80的扩展,也就是CP936字码表 (Code Page 936)的扩展(之前CP936和GB 2312-80一模一样)。

    GB 2312的出现,基本满足了汉字的计算机处理需要,但对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。

    GBK采用双字节表示,总体编码范围为8140-FEFE,首字节在81-FE 之间,尾字节在40-FE 之间,剔除 xx7F一条线。总计23940 个码位,共收入21886个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号883 个。P-Windows3.2和苹果OS以GB2312为基本汉字编码, Windows 95/98则以GBK为基本汉字编码。

    有些汉字用五笔和拼音都打不出来,如:溙(五笔IDWI),须调出GBK字符集才能打出这个字。极品五笔中可右击输入法图标,设置,属性中选GBK字符集。极点五笔中可点击工具条中相关图标进行转换。

    Big5

    在台湾、香港与澳门地区,使用的是繁体中文字符集。而1980年发布的GB2312面向简体中文字符集,并不支持繁体汉字。在这些使用繁体中文字符集的地区,一度出现过很多不同厂商提出的字符集编码,这些编码彼此互不兼容,造成了信息交流的困难。为统一繁体字符集编码,1984年,台湾五大厂商宏碁、神通、佳佳、零壹以及大众一同制定了一种繁体中文编码方案,因其来源被称为五大码,英文写作Big5,后来按英文翻译回汉字后,普遍被称为大五码。

    大五码是一种繁体中文汉字字符集,其中繁体汉字13053个,808个标点符号、希腊字母及特殊符号。大五码的编码码表直接针对存储而设计,每个字符统一使用两个字节存储表示。第1字节范围81H-FEH,避开了同ASCII码的冲突,第2字节范围是40H-7EH和A1H-FEH。因为Big5的字符编码范围同GB2312字符的存储码范围存在冲突,所以在同一正文不能对两种字符集的字符同时支持。

    Unicode

    如上ANSI编码条例中所述,世界上存在着多种编码
    方式,在ANSi编码下,同一个编码值,在不同的编码体系里代表着不同的字。在简体中文系统下,ANSI 编码代表 GB2312 编码,在日文操作系统下,ANSI 编码代表 JIS 编码,可能最终显示的是中文,也可能显示的是日文。在ANSI编码体系下,要想打开一个文本文件,不但要知道它的编码方式,还要安装有对应编码表,否则就可能无法读取或出现乱码。为什么电子邮件和网页都经常会出现乱码,就是因为信息的提供者可能是日文的ANSI编码体系和信息的读取者可能是中文的编码体系,他们对同一个二进制编码值进行显示,采用了不同的编码,导致乱码。这个问题促使了unicode码的诞生。

    如果有一种编码,将世界上所有的符号都纳入其中,无论是英文、日文、还是中文等,大家都使用这个编码表,就不会出现编码不匹配现象。每个符号对应一个唯一的编码,乱码问题就不存在了。这就是Unicode编码。

    Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。每个符号的编码都不一样,比如,U+0639表示阿拉伯字母Ain,U+0041表示英语的大写字母A,“汉”这个字的Unicode编码是U+6C49。

    Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

    UTF-8

    为了提高Unicode的编码效率,于是就出现了UTF-8编码。UTF-8可以根据不同的符号自动选择编码的长短。比如英文字母可以只用1个字节就够了。

    UTF-8的编码是这样得出来的,以”汉”这个字为例:

    “汉”字的Unicode编码是U+00006C49,然后把U+00006C49通过UTF-8编码器进行编码,最后输出的UTF-8编码是E6B189。

     

    补充:

    32位和64位 /31bit和64bit的区别

    1.  对操作系统来说,64位和32位指最大内存寻址空间,32位最大4GB(2^32),64位理论上16EB(2^64),但现在一般都是2^48

    2、对硬件来说,64位和32位指数据宽度,64位一次取8字节y也就是64bit,32取4字节也就是32bit,所以理论上64位比32位性能提高了一倍。实际上的情况是,达不到,内存变大了,需要寻址更多。

    3、对应用程序来说,应用程序基于操作系统 和硬件,其使用的指令宽度随系统和硬件变化。

    32位和64位区别的最常见表现就是64万位操作系统可以支持4G以上的内存。缺点也是内存占用,64位代码比32位代码多占用空间,

    现在来看64位操作系统兼容32位软件,反之则不行。

    转载于:https://www.cnblogs.com/hellojesson/p/5793591.html

    展开全文
  • 文本文件与二进制文件的编码差别

    千次阅读 2014-07-21 17:56:38
    网上关于文本文件与二进制文件的文章很多,但遗憾的是,这些文章讲得都比较散。下面我将结合所查到的资料,从多个角度谈谈文本文件与二进制文件。一、文本文件与二进制文件的定义大家都知道计算机的存储在物理上是...

    网上关于文本文件与二进制文件的文章很多,但遗憾的是,这些文章讲得都比较散。下面我将结合所查到的资料,从多个角度谈谈文本文件与二进制文件。

    一、文本文件与二进制文件的定义

    大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。简单来说,文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等;二进制文件是基于值编码的文件,可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。

    从上面可以看出文本文件基本上是定长编码的,它是基于字符,每个字符在具体编码中是固定的,ASCII码是8个比特的编码,UNICODE一般占16个比特。对于二进制文件,它可看成是变长编码的,因为是值编码,多少个比特代表一个值,完全由自定义决定。

    例如,对于BMP文件,其头部是固定长度的文件头信息,前2字节用来记录文件为BMP格式,接下来的8个字节用来记录文件长度,再接下来的4字节用来记录BMP文件头的长度。可以得出,BMP文件的编码过程是基于值的(不定长的,2、4、8字节长的值都有),因此BMP是二进制文件。

    二、文本文件与二进制文件的存取

    文本工具打开一个文件的过程是怎样的呢?例如记事本,它首先读取文件物理上所对应的二进制比特流(前面已经说了,存储都是二进制的),然后按照所选择的解码方式来解释这个流,然后将解释结果显示出来。一般来说,你选取的解码方式会是ASCII码形式(ASCII码的一个字符是8个比特),接下来,它8个比特8个比特地来解释这个文件流。例如对于这么一个文件流"01000000_01000001_01000010_01000011"(下划线"_"是为了增强可读性而手动添加的),第一个8比特''01000000''按ASCII码来解码的话,所对应的字符是字符''A'',同理其它3个8比特可分别解码为''BCD'',即这个文件流可解释成"ABCD",然后记事本就将这个"ABCD"显示在屏幕上。

    事实上,世界上任何东西要与其他东西通信会话,都存在一个既定的协议,既定的编码规范。人与人之间通过文字联络,如在汉语中,汉字“妈”代表生育你的那个人,这就是一种既定的编码。但注意到这样一种情况,汉字“妈”在日本文字里有可能是你生育下的那个人,所以当一个中国人A与日本人B之间用“妈”这个字进行交流,出现误解就很正常的。用记事本打开二进制文件与上面的情况类似。记事本无论打开什么文件都按既定的字符编码工作(如ASCII码),所以当他打开二进制文件时,出现乱码也是很必然的一件事情了,原因就在于解码和译码不对应。例如文件流''00000000_00000000_00000000_00000001''可能在二进制文件中对应的是一个四字节的整数int 1,但在记事本里解释就变成了"NULL_NULL_NULL_SOH"这四个控制符。

    文本文件的存储与其读取基本上是个逆过程,不再赘述。而二进制文件的存取显然与文本文件的存取差不多,只是编解码方式不同而已,也不再叙述。

    三、文本文件与二进制文件的优缺点

    因为文本文件与二进制文件的区别仅仅是编码上不同,因此它们的优缺点就是编码的优缺点。一般认为,文本文件编码基于字符定长,译码容易些;二进制文件编码是变长的,所以它灵活,存储利用率要高些,译码难一些(不同的二进制文件格式,有不同的译码方式)。关于空间利用率,二进制文件是优于文本文件的,二进制文件甚至可以用一个比特来代表一个意思(位操作),而文本文件任何一个意思至少是一个字符。

    另外,文本文件的可读性要好些,存储要花费转换时间(读写要编译码), 而二进制文件可读性差,存储不存在转换时间(读写不要编解码,直接写值)。这里的可读性是从软件使用者角度来说的,因为我们用通用的记事本工具就几乎可以浏览所有文本文件,所以说文本文件可读性好;而读写一个具体的二进制文件需要一个具体的文件解码器,所以说二进制文件可读性差,比如读bmp文件,必须用读图软件。而这里的存储转换时间应该是从编程的角度来说的,因为有些操作系统如Windows需要对回车换行符进行转换(将''/n'',换成''/r/n'',所以文件读写时,操作系统需要一个一个字符的检查当前字符是不是''/n''或''/r/n'').这个在存储转换在Linux操作系统中并不需要,当然,当在两个不同的操作系统上共享文件时,这种存储转换又可能出来(如Linux系统和Windows系统共享文本文件)。

    四、C的文本读写和二进制读写

    应该说C的文本读写与二进制的读写是一个编程层次上的问题,与具体的操作系统有关,所以“用文本方式读写的文件一定是文本文件,用二进制读写的文件一定是二进制文件”这类观点是错误的。下面的讲述非明确指出操作系统类型,都暗指Windows。C的文本方读写与二进制读写的差别仅仅体现在回车换行符的处理上。文本方式写时,每遇到一个''/n''(0AH换行符),它将其换成''/r/n''(0D0AH,回车换行),然后再写入文件;当文本读取时,它每遇到一个''/r/n''将其反变化为''/n'',然后送到读缓冲区。正因为文本方式有''/n''--''/r/n''之间的转换,其存在转换耗时。二进制读写时,其不存在任何转换,直接将写缓冲区中数据写入文件。

    总地来说,从编程的角度来说,C中文本或二进制读写都是缓冲区与文件中二进制流的交互,只是文本读写时有回车换行的转换。所以当写缓冲区中无换行符''/n''(0AH),文本写与二进制写的结果是一样的,同理,当文件中不存在''/r/n''(0DH0AH)时,文本读与二进制读的结果一样。

    下面给出一个小程序来证明前面的观点:

    1、编写如下程序。该程序将字符串"12/n3"分别以文本方式和二进制方式写入test1和test2,然后再以文本方式读test1,以二进制方式读test2。

    #include<stdio.h>
    int main()
    {
        FILE * fp_text,* fp_binary;
        char write_buf[4]={'1','2','/n','3'};
        char read_buf_text[6],read_buf_binary[6];
        int read_count_text,read_count_binary;
        //未检测打开是否失败
        fp_text=fopen("test1","wt+");
        fp_binary=fopen("test2","wb+");
        fwrite(write_buf,4,1,fp_text);
        fwrite(write_buf,4,1,fp_binary);
        //fflush(fp_text);
        //fflush(fp_binary);
     
        fseek(fp_text,0L,SEEK_SET);//fseek附带了fflush功能
        fseek(fp_binary,0L,SEEK_SET);
        read_count_text=fread(read_buf_text,sizeof(char),5,fp_text);
        read_count_binary=fread(read_buf_binary,sizeof(char),5,fp_binary);
        //加''/0'',便于打印字符串
        read_buf_text[read_count_text]='/0';
        read_buf_binary[read_count_binary]='/0';
        printf("In Text Mode:read_count=%d,string=%s/n",read_count_text,read_buf_text);
        printf("In Binary Mode:read_count=%d,string=%s/n",read_count_binary,read_buf_binary);
        fclose(fp_text);
        fclose(fp_binary);     
        return 0; 
    }

    2、编译运行,显示结果如下:

    In Text Mode:read_count=4,string=12
    3                           
    //文本方式读test1,读到的字符与原先写入test1的字符一样
    In Binary Mode:read_count=4,string=12
    3                           
    //二进制方式读test2,读到的字符与原先写入test2的字符一样

    3、用记事本打开test1和test2,结果如下:

    test1的内容:
    12
    3           
    //文本方式写入的,有换行效果,参看下面的4
    test2的内容:
    123         
    //二进制方式写入的,无换行效果(记事本对"/r/n"之外的控制字符串无显示效果),参看下面的4

    4、以Binary方式(二进制方式)打开test1和test2,结果如下: 

    test1的内容:
    31 32 0D 0A 33
    //十六进制,5个字节,比写入缓冲区多了一个字节,在"/n"(0AH)前插了一个"/r"(0DH)
    test2的内容:
    31 32 0A 33
    //十六进制,4个字节,与写入缓冲区的值一致

    5、总结

    从4可以看出,文本方式写时,存在''/n''->''/r/n''的转换,而二进制方式无转换。又从2和4可以推出,文本方式读时存在''/r/n''->至''/n''的转换,而二进制方式无转换。有兴趣的读者可以尝试以二进制方式读test1或以文本方式读test2,看会出现什么效果。

    6.补充说明

    上述说明仅适用于Windows,在Unix/Linux中文本方式的读写与二进制方式的读写无差别,不存在回车换行间的转换。UNIX/Linux并没有区分这两种文件,他们对所有文件一视同仁,将所有文件都看成二进制文件。标准I/O库中 主要使用 fread/fwrite来读写二进制文件,而对于文本文件可以使用 fread/fwrite/fgetc/fputc fprintf等等。

    展开全文
  • 二进制编码

    2011-07-18 19:37:26
    负数的二进制编码——越是基础的越是要掌握 原码就是原来的表示方法反码是除符号位(最高位)外取反补码=反码+
    负数的二进制编码——越是基础的越是要掌握            

    原码就是原来的表示方法

    反码是除符号位(最高位)外取反

    补码=反码+1

    以前学习二进制编码时,老师讲了一堆堆的什么原码啊反码啊补码啊xxxx转换啊,还有负数的表示方式啊 总是记不零清,终于从网上找到了一种比较好的讲解方式,保存再share一下,不过为了系统化讲解,又找来了一些编码的基础知识,如果只想看负数编码记忆法,请跳转到

    1.如果你不知道二进制怎么编码,请继续,否则请跳到2

        1字节 = 8位,所以它能表示的最大数当然是8位都是1(既然2进制的数只能是0或1,如果是我们常见的10进制,那就8位都为9,这样说,你该懂了?)

    1字节的二进制数中,最大的数:11111111。

        这个数的大小是多少呢?让我们来把它转换为十进制数。

        无论是什么进制,都是左边是高位,右边是低位。10进制是我们非常习惯的计数方式,第一位代表有几个1(即几个100),第二位代表有几个10(即几个101),第三位代表有几个100(即有几个102)…,用小学课本上的说法就是:个位上的数表示几个1,十位上的数表示向个10,百位上的数表示几个100……

        同理可证,二进制数则是:第1位数表示几个1 (20),第2位数表示几个2(21),第3位数表示几个4(22),第4位数表示向个8(23)……

        以前我们知道1个字节有8位,现在通过计算,我们又得知:1个字节可以表达的最大的数是255,也就是说表示0~255这256个数。

         那么两个字节(双字节数)呢?双字节共16位。 1111111111111111,这个数并不大,但长得有点眼晕,从现在起,我们要学会这样来表达二制数:

    1111 1111 1111 1111,即每4位隔一空格。

    双字节数最大值为:

    1 * 215 + 1 *214 + 1* 213 + 1 * 212 + 1 * 211 + 1 * 210 + …… + 1 * 22 + 1 * 21 + 1* 20 = 65535

        很自然,我们可以想到,一种数据类型允许的最大值,和它的位数有关。具体的计算方法方法是,如果它有n位,那么最大值就是:

    n位二进制数的最大值:1 * 2(n-1) + 1 * 2(n-2) + ... + 1 * 20

    2、理解有符号数和无符号数

    负数在计算机中如何表示呢?这一点,你可能听过两种不同的回答。

    一 种是教科书,它会告诉你:计算机用“补码”表示负数。可是有关“补码”的概念一说就得一节课,这一些我们需要在第6章中用一章的篇幅讲2进制的一切。再 者,用“补码”表示负数,其实是一种公式,公式的作用在于告诉你,想得到问题的答案,应该如何计算。却并没有告诉你为什么用这个公式就可以得到答案? -----我就是被这个弄混淆的>_<

    另 一种是一些程序员告诉你的:用二进制数的最高位表示符号,最高位是0,表示正数,最高位是1,表示负数。这种说法本身没错,可是如果没有下文,那么它就是 错的。至少它不能解释,为什么字符类型的-1用二进制表示是“1111 1111”(16进制为FF);而不是我们更能理解的“1000 0001”。(为什么说后者更好理解呢?因为既然说最高位是1时表示负数,那1000 0001不是正好是-1吗?-----re!当初偶就是这么想的,so一直在脑中打架,越打越混淆=,=)。

    让我们从头说起。

    2.1、你自已决定是否需要有正负。

    就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。

    在计算机中,可以区分正负的类型,称为有符类型,无正负的类型(只有正值),称为无符类型。

    数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则只有有符类型。

    字符类型也分为有符和无符类型。

    比如有两个量,年龄和库存,我们可以定前者为无符的字符类型,后者定为有符的整数类型。

    2、使用二制数中的最高位表示正负。

    首先得知道最高位是哪一位?1个字节的类型,如字符类型,最高位是第7位,2个字节的数,最高位是第15位,4个字节的数,最高位是第31位。不同长度的数值类型,其最高位也就不同,但总是最左边的那位(如下示意)。字符类型固定是1个字节,所以最高位总是第7位。

    (红色为最高位)

    单字节数: 1111 1111

    双字节数: 1111 1111 1111 1111

    四字节数: 1111 1111 1111 1111 1111 1111 1111 1111

    当我们指定一个数量是无符号类型时,那么其最高位的1或0,和其它位一样,用来表示该数的大小。

    当我们指定一个数量是有符号类型时,此时,最高数称为“符号位”。为1时,表示该数为负值,为0时表示为正值。

     3、无符号数和有符号数的范围区别。

    无符号数中,所有的位都用于直接表示该值的大小。有符号数中最高位用于表示正负,所以,当为正值时,该数的最大值就会变小。我们举一个字节的数值对比:

    无符号数: 1111 1111   值:255 1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

    有符号数: 0111 1111   值:127         1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

      同样是一个字节,无符号数的最大值是255,而有符号数的最大值是127。原因是有符号数中的最高位被挪去表示符号了。并且,我们知道,最高位的权值也是最高的(对于1字节数来说是2的7次方=128),所以仅仅少于一位,最大值一下子减半。

    不过,有符号数的长处是它可以表示负数。因此,虽然它的在最大值缩水了,却在负值的方向出现了伸展。我们仍一个字节的数值对比:

    无符号数:                       0 ----------------- 255

    有符号数:        -128 --------- 0 ---------- 127

     

    同样是一个字节,无符号的最小值是 0 ,而有符号数的最小值是-128。所以二者能表达的不同的数值的个数都一样是256个。只不过前者表达的是0到255这256个数,后者表达的是-128到+127这256个数。

    一个有符号的数据类型的最小值是如何计算出来的呢?

    有符号的数据类型的最大值的计算方法完全和无符号一样,只不过它少了一个最高位(见第3点)。但在负值范围内,数值的计算方法不能直接使用1* 26 + 1* 25 的公式进行转换。在计算机中,负数除为最高位为1以外,还采用补码形式进行表达。所以在计算其值前,需要对补码进行还原。这里,先直观地看一眼补码的形式:

    以我们原有的数学经验,在10进制中:1 表示正1,而加上负号:-1 表示和1相对的负值。

    那么,我们会很容易认为在2进制中(1个字节): 0000 0001 表示正1,则高位为1后:1000 0001应该表示-1。

    然而,事实上计算机中的规定有些相反,请看下表:

    二进制值(1字节) 十进制值
    1000 0000红色的1代表负数蓝色的是补码(补码=反码+1) -128
    1000 0001蓝色部分代表多大的值?:将补码还原为原码 -127想化成负数?:先减去1按位取反
    1000 0010还原方法:补码-1再取反 -126
    1000 0011 -125
    ... ...
    1111 1110 -2
    1111 1111 -1

     

    首先我们看到,从-1到-128,其二进制的最高位都是1(表中标为红色),正如我们前面的学。

    然后我们有些奇怪地发现,1000 0000 并没有拿来表示 -0;而1000 0001也不是拿来直观地表示-1。事实上,-1 用1111 1111来表示。

    怎么理解这个问题呢?先得问一句是-1大还是-128大

    当 然是 -1 大。-1是最大的负整数。以此对应,计算机中无论是字符类型,或者是整数类型,也无论这个整数是几个字节。它都用全1来表示 -1。比如一个字节的数值中:1111 1111表示-1,那么,1111 1111 - 1 是什么呢?和现实中的计算结果完全一致。1111 1111 - 1 = 1111 1110,而1111 1110就是-2。这样一直减下去,当减到只剩最高位用于表示符号的1以外,其它低位全为0时,就是最小的负值了,在一字节中,最小的负值是1000 0000,也就是-128。

    --------小米批注:就是这部分蓝色的文字,让我终于能记清楚-1的编码方式了,汗=。=

    我们以-1为例,来看看不同字节数的整数中,如何表达-1这个数:

    字节数 二进制值 十进制值
    单字节数 1111 1111红色表示负数蓝色部分的补码为值1 -1
    负数:原码就是原来的表示方法、反码是除符号位(最高位)外取反、补码=反码+1双字节数 1111 1111 1111 1111 -1
    四字节数 1111 1111 1111 1111 1111 1111 1111 1111 -1

    可 能有同学这时会混了:为什么 1111 1111 有时表示255,有时又表示-1?所以我再强调一下本节前面所说的第2点:你自已决定一个数是有符号还是无符号的。写程序时,指定一个量是有符号的,那么 当这个量的二进制各位上都是1时,它表示的数就是-1;相反,如果事选声明这个量是无符号的,此时它表示的就是该量允许的最大值,对于一个字节的数来说, 最大值就是255。

    ok 摘抄暂告段落,其实原文对于c的一些基础数据类型知识介绍的非常详细,8过太长了,摘到我需要的内容后就没全帖过来,如果有需要学习的同学,建议参见原文:)

    转自http://blog.cersp.com/7892477/1201309.aspx

    关键字: 二进制编码,负数二进制,二进制

    2007-09-09 14:24:25
    标签:教育杂谈

        在计算机内部,所有信息都是用二进制数串的形式表示的。整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。无符号的整数用来表示0和正整数, 带符号的证书可以表示所有的整数。由于计算机中符号和数字一样,都必须用二进制数串来表示,因此,正负号也必须用0、1来表示。通常我们用最高的有效位来 表示数的符号(当用8位来表示一个整数时,第8位即为最高有效位,当用16位来表示一个整数时,第16位即为最高有效位。)0表示正号、1表示负号,这种 正负号数字化的机内表示形式就称为“机器数”,而相应的机器外部用正负号表示的数称为“真值”。将一个真值表示成二进制字串的机器数的过程就称为编码。

        无符号数没有原码、反码和补码一说。只有带符号数才存在不同的编码方式。

    带符号整数有原码、反码、补码等几种编码方式。原码即直接将真值转换为其相应的二进制形式,而反码和补码是对原码进行某种转换编码方式。正整数的原 码、反码和补码都一样,负数的反码是对原码的除符号位外的其他位进行取反后的结果(取反即如果该位为0则变为1,而该位为1则变为0的操作)。而补码是先 求原码的反码,然后在反码的末尾位加1 后得到的结果,即补码是反码+1。IBM-PC中带符号整数都采用补码形式表示。(注意,只是带符号的整数采用补码存储表示的,浮点数另有其存储方式。)

        采用补码的原因或好处如下。

        采用补码运算具有如下两个特征:

        1)因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。

        2)两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。

        这样的运算有两个好处:

        1)使符号位能与有效值部分一起参加运算,从而简化运算规则。从而可以简化运算器的结构,提高运算速度;(减法运算可以用加法运算表示出来。)

        2)加法运算比减法运算更易于实现。使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。

        下面深入分析上面所陈述的采用补码的原因(目的)。

        用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下:假设字长为8bits

        ( 1 ) 10- ( 1 )10 = ( 1 )10 + ( -1 )10 = ( 0 )10

        (00000001)原 + (10000001)原 = (10000010)原 = ( -2 ) 显然不正确.。

        因为在两个整数的加法运算中是没有问题的,于是就发现问题出现在带符号位的负数身上,对除符号位外的其余各位逐位取反就产生了反码。反码的取值空间和原码相同且一一对应。下面是反码的减法运算:

         ( 1 )10 - ( 1 ) 10= ( 1 ) 10+ ( -1 ) 10= ( 0 )10

         (00000001) 反+ (11111110)反 = (11111111)反 = ( -0 ) 有问题。

        ( 1 )10 - ( 2)10 = ( 1 )10 + ( -2 )10 = ( -1 )10

         (00000001) 反+ (11111101)反 = (11111110)反 = ( -1 ) 正确

        问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的。

    于是就引入了补码概念。负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的。在补码中用(-128)代替了(-0),所以补码的表示范围为:

    (-128~0~127)共256个。

        注意:(-128)没有相对应的原码和反码, (-128) = (10000000) 补码的加减运算如下:

        ( 1 ) 10- ( 1 ) 10= ( 1 )10 + ( -1 )10 = ( 0 )10

        (00000001)补 + (11111111)补 = (00000000)补 = ( 0 ) 正确

         ( 1 ) 10- ( 2) 10= ( 1 )10 + ( -2 )10 = ( -1 )10

        (00000001) 补+ (11111110) 补= (11111111)补 = ( -1 ) 正确

        采用补码表示还有另外一个原因,那就是为了防止0的机器数有两个编码。原码和反码表示的0有两种形式+0和-0,而我们知道,+0和-0是相同的。这 样,8位的原码和反码表示的整数的范围就是-127~+127(11111111~01111111),而采用补码表示的时候,00000000是+0, 即0;10000000不再是-0,而是-128,这样,补码表示的数的范围就是-128~+127了,不但增加了一个数得表示范围,而且还保证了0编码 的唯一性。

        整数和0的原码、反码和补码都相同,下面介绍手工快速求负数补码的方法。这个方法在教材的第8页已经提到了,这里再写出来以便能引起大家的注意。其方法如下:

        先写出该负数的相反数(正数),再将该正数的二进制形式写出来,然后对这个二进制位串按位取反,即若是1则改为0,若是0则改为1,最后在末位加1。

    接下来的问题是,如何能将减法运算转换成加法运算呢?

        我们已经知道,原码表示简单直观,与真值转换容易。但如果用原码表示,其符号位不能参加运算。在计算机中用原码实现算术运算时,要取绝对值参加运算,符号 位单独处理,这对乘除运算是很容易实现的,但对加减运算是非常不方便的,如两个异号数相加,实际是要做减法,而两个异号数相减,实际是要做加法。在做减法 时,还要判断操作数绝对值的大小,这些都会使运算器的设计变得很复杂。而补码这种编码方式实际上正是针对上述问题的。通过用补码进行表示,就可以把减法运 算化为加法运算。

        在日常生活中,有许多化减为加的例子。例如,时钟是逢12进位,12点也可看作0点。当将时针从10点调整到5点时有以下两种方法:

        一种方法是时针逆时针方向拨5格,相当于做减法:

            10-5=5

        另一种方法是时针顺时针方向拨7格,相当于做加法:

          10+7=12+5=5    (MOD 12)

        这是由于时钟以12 为模,在这个前提下,当和超过12时,可将12舍去。于是,减5相当于加7。同理,减4可表示成加8,减3可表示成加9,…。

        在数学中,用“同余”概念描述上述关系,即两整数AB用同一个正整数M (M称为模)去除而余数相等,则称A、BM同余,记作:

           AB     (MOD M)

        具有同余关系的两个数为互补关系,其中一个称为另一个的补码。当M=12时,-5和+7,-4和+8,-3和+9就是同余的,它们互为补码。

        从同余的概念和上述时钟的例子,不难得出结论:对于某一确定的模,用某数减去小于模的另一个数,总可以用加上“模减去该数绝对值的差”来代替。因此,在有模运算中,减法就可以化作加法来做。

        可以看出,补码的加法运算所依据的基本关系为:

    [x]补+ [y]补= [x+y]补

        补码减法所依据的基本关系式:

    [x-y]补 =[x+(-y)]补= [x]补+ [-y]补

        至于加法运算为什么比减法运算易于实现以及CPU如何实现各种算术运算等问题,则需要通过对数字电路的学习来理解CPU的运算器的硬件实现问题的相关内容了。


    展开全文
  • 二进制

    2018-12-10 11:07:39
    引用处: 二进制 二进制和十进制间小数怎么转换 ...的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特bit(二进制位)。计算机中的二进制是一...
  • 二进制编码--负数

    2013-03-31 21:38:31
    以前学习二进制编码时,老师讲了一堆堆的什么原码啊反码啊补码啊xxxx转换啊,还有负数的表示方式啊 总是记不零清,终于从网上找到了一种比较好的讲解方式,保存再share一下,不过为了系统化讲解,又找来了一些编码的...
  • 8421BCD码是一种最常见的二-十进制编码,用四位二进制码0000~1001代表十进制的0~9,它与十进制码的转换十分简单,只需将需要转化的数字改写为对应的二/十进制码即可。 例:(12)10=(00010010)BCD    &...
  • 这个是将输入的由0,1构成的二进制序列通过matlab转换成以差分编码形式输出。
  • Hellow二进制

    2021-01-17 17:10:17
    Hellow 二进制 在web和二进制中我一眼就看准了二进制,为什么会这样说的呢,可能是跟数字有缘,哈哈哈哈哈哈。确实,跟数字挺有缘的,毕竟小编...二进制数据是按照一串0和 1的形式编码的。而绝大多数的程序会给某些特殊
  • 以前学习二进制编码时,老师讲了一堆堆的什么原码啊反码啊补码啊xxxx转换啊,还有负数的表示方式啊 总是记不零清,终于从网上找到了一种比较好的讲解方式,保存再share一下,不过为了系统化讲解,又找来了一些编码的...
  • 二进制负数

    千次阅读 2014-09-25 13:30:01
    以前学习二进制编码时,老师讲了一堆堆的什么原码啊反码啊补码啊xxxx转换啊,还有负数的表示方式啊 总是记不零清,终于从网上找到了一种比较好的讲解方式,保存再share一下,不过为了系统化讲解,又找来了一些编码的...
  • 二进制文件和非二进制文件

    千次阅读 2012-09-17 14:34:53
    二进制文件和非二进制文件   1. 流式文件:文件中的数据是一串字符,没有结构。 2. 文本文件是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。特别的是,文本文件是指以ASCII码方式(也称文本方式)存储...
  • 二进制安全学习路线

    千次阅读 多人点赞 2019-08-14 23:35:17
    本文作者:rkvir(二进制小组组长) 转自某推文,链接找不到了。 一. 什么是二进制安全 在很久以前安全圈并没有把安全技术做出一个特别清晰的分类。在大部分人眼里,所谓的黑客,安全研究者指的就是研究渗透入侵...
  • 二进制数字调制

    千次阅读 2020-05-14 14:16:31
    一、数字频带传输相关 ...虽然二进制调制实际应用并不广泛,但是对其分析对高级数字调制有启发作用。基本二进制数字调制分为: 这里是将余弦波画成了正弦波,名称前都省略了2,2表示二进制。...
  • 原码就是原来的表示方法反码是除符号位(最高位)外取反补码=反码+1以前学习二进制编码时,老师讲了一堆堆的什么原码啊反码啊补码啊xxxx转换啊,还有负数的表示方式啊 总是记不零清,终于从网上找到了一种比较好的...
  • 文本文件与二进制文件区别

    千次阅读 2019-06-08 08:57:53
    一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制...二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。 从上面可以看出...
  • 二进制和电路图

    2020-11-08 11:12:17
    本篇笔记理解需要的内容:二进制的基本知识,如何用0,1表示二进制的正负,二进制的加减法等等。逻辑运算与或非;了解电路中的串联,并联,电阻等概念。 1.晶体管如何控制逻辑运算: and:类似于电路中的串联,用...
  • 数字电路-二进制转BCD码

    千次阅读 2019-10-04 00:31:33
    由此可见BCD码的一段与普通四位二进制来表示十进制位有6的进制差。所以这就是二进制转化为BCD码的关键所在。下面来讲讲主要步骤: 先预估十进制数的位数,预先给BCD码好段,此时的BCD码为空无任何数据 接着讲...
  • 文本文件与二进制文件区别   一、文本文件与二进制文件的定义 ...大家都知道计算机的存储在物理上是...二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自...
  • 来源: 【http://www.cnblogs.com/zhangjiankun/archive/2011/11/27/2265184.html】 ...  计算机只识别二进制0,1,无论是文件文件和二进制文件在物理存储上是二进制的,这里的区别是属于逻辑存储区别。
  • 关于二进制

    千次阅读 2012-10-19 08:53:58
    原文地址:http://hi.baidu.com/iamsuperyuyue/item/623b44ec097b022b5a2d64a9  ...   原码就是原来的表示方法 反码是除符号位(最高位)外取反 补码=反码+1 ...1.关于
  • 文本文件与二进制文件一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,...二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编
  • 1.如果你不知道二进制怎么编码,请继续,否则请跳到2  1字节 = 8位,所以它能表示的最大数当然是8位都是1(既然2进制的数只能是0或1,如果是我们常见的10进制,那就8位都为9,这样说,你该懂了?) 1字节的二进制...
  • 二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码。 从上面可以看出文本文件基本上是定长编码的(也有非定长的编码如UTF-8)。而二进制文件可看成是变长...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,166
精华内容 14,866
关键字:

二进制差分编码