分享

如何将汉字转换成二进制编码

 快乐成群m5ct4t 2017-09-09
各数制之间的转换

  我们用R表示任何数制的基数,讨论各数制之间的转换。

  1.R进制数转换为十进制数

  二进制、八进制和十六进制数转换为等值的十进制数,只要把它们用多项式表示并在十进制下进行计算,所得的结果就是十进制数

  2.十进制数转换为R进制数

  十进制数转换为等值的二进制、八进制和十六进制数,需要对整数部分和小数部分分别进行转换。其整数部分用连续除以基数R取余数的方法来完成,小数部分用连续乘以基数R取整数的方法来实现。

     基数   基数   基数   基数   基数

十进制  10000  1000   100   10    1

二进制   16    8    4    2    1

八进制  4096   512    64   8    1

十六进制 65536  4096   256   16    1

  3.二进制数与八进制数十六进制数的转换

  二进制数与八进制数的转换应以"3位二进制数对应1位八进制数"%的原则进行。同理,因为24=16,则二进制数与十六进制数的转换应以"4位二进制数对应1位十六进制数"的原则进行。

  四、二进制数的运算

  在计算机中,二进制数的运算包括算术运算和逻辑运算。

  1.二进制数的算术运算

  (1)二进制数加法

  加法原则:逢二进一

  (2)二进制数减法

  减法原则:借一当二

  (3)二进制数乘法

  乘法原则:与算术乘法形式相同

  (4)二进制数除法

  除法原则:与算术除法形式相同

  2.二进制数的逻辑运算

  逻辑运算是以二进制数为基础的,逻辑变量只有两个,用来表示逻辑"真"和"假"。

  (1)逻辑加法("或"运算)

  运算符号:"+"或"∨"

  运算规则:0+0=0;0+1=1;1+0=1;1+1=1;

  (2)逻辑乘法("与"运算)

  运算符号:"×"或"∧"

  运算规则:0×0=0;0×1=0;1×0=0;1×1=1;

  (3)逻辑"非"运算

  运算符号:"-"%运算规则:A&-*=0时,A=1

  五、数据类型及数据单位

  1.数据的两种类型

  计算机中的数据可概括分为两大类:数值型数据字符型数据。所有的非数值型数据都要经过数字化后才能在计算机中存储和处理。

  2.数据单位

  在计算机中通常使用三个数据单位:位、字节和字。位的概念是:最小的存储单位,英文名称是bit,常用小写b或bit表示。用8位二进制数作为表示字符和数字的基本单元,

  英文名称是byte,称为一字节。通常用大"B"表示。

  1B(字节)=8b(位)

  1KB(千字节)=1024B(字节)

  1MB(兆字节)=1024KB(千字节)

  字长:字长也称为字或计算机字,它是计算机能并行处理的二进制数的位数。

  六、字符编码与汉字编码

  1.字符编码

  目前微型机中普遍采用的字符编码是ASCII码。它是用七位二进制数对127个字符进行编码,其中前32个是一些不可打印的控制符号。

  2.汉字编码及字模信息

  汉字有两种编码:国标码与机内码。

  国标码是"中华人民共和国国家标准信息交换汉字编码",代号为"GB2312-80"。在国标码的字符集中,收集了一级汉字3755个,二级汉字3008个,图形符号682个,共7445个。一个汉字对应一个区位码,由四位数字组成,前两位数字为区码(0~94),后两位数字为位码(0~94)。机内码是指汉字在计算机中的编码

  汉字的机内码占两个字节,分别称为机内码的高位与低位。它们与区位码的关系如下:

  机内码高位=区码+A0H

  机内码低位=位码+A0H

  汉字字库是由所有汉字的字模信息构成的。一个汉字字模信息占若干字节,究竟占多少个字节由汉字的字形决定。

  例如,如果用16×16点阵表示一个汉字,则一个汉字占16行,每行有16个点,在存储时用两个字节存放一行上16个点的信息,对应位为"0"表示该点为"白","1"表示该点为"黑"。因此,一个16×16点阵的汉字占32个字节。

---------------------------------------------------------------

描述2进制的数据结构,用字符串直观,但是效率低,用数组效率高,但是不直观。
但是道理相同。

性字转换后的结果:
010000010000 010010010000 010010010100 111011111110 110010010000 010100010000 010011111110 010000010000 010000010000 010000010000 010111111110 000000000000 

144位编码,这也不可能的,

性字编码alert asc("性")得到-12076,转化为2进制为-10111100101100 不算正负有14位就够了。
如果非要补到144位也因该是高位补0。

function c10to2(x)
'10进制到2进制的转换
  dim sign, result
  result = ""
  '符号
  sign = sgn(x)
  x = abs(x)
  
  if x = 0 then
    c10to2 = 0
    exit function
  end if
  do until x = "0"    
    result = result & (x mod 2)    
    x = x \ 2
  loop
  result = strReverse(result)
  
  if sign = -1 then 
    c10to2 = "-" & result
  else
    c10to2 = result
  end if
end function

---------------------------------------------------------------

另外一个人的写法:

function c10to2(x) 
mysign=sgn(x) 
x=abs(x) 
DigS=1 

do 
if x<2^DigS

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多