标题:数值在word存储中如下例子 中的式子表示什么意思?请指教。
取消只看楼主
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
结帖率:79.3%
已结贴  问题点数:20 回复次数:7 
数值在word存储中如下例子 中的式子表示什么意思?请指教。
有以下2个问题请教。
1)一个10进制数值求出该值在WORD中的高位与低位。如2006为例求出高位与低位的ASCII码串
高位 ASCII码串 :chr(int(2006/256))  **为何用到取整?它得出结果是二进制
低位 ASCII码串:  chr(mod(2006,256))   **为何用到取模?



2)
10进制数值存储在WORD格式(16位)中它以字符形式存储还是以二进制形式存储?
搜索更多相关主题的帖子: word 二进制 
2012-01-19 18:32
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
还不是十分清楚。再次请教。笨呀。
再加一个问题:什么叫建立结构字符串
2012-01-19 19:20
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
张洪举编的权威指南中调用API有关内容
2012-01-19 20:34
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
简单通俗点吧.化学专业当时只简单学了一点BASIC。VFP在工作中自学的。请多多包函
2012-01-19 21:44
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
首先谢谢,向您拜个早年。正在拜读。
通过计算已知高位的1是低位1的256倍。256在WORD中的形式是“CHR(00000000的10进制值)+CHR(00000001的10进制值*256)”。此句已理介了。
                                                                 低位                  高位


现有一个2006,求出该值在WORD中的高位与低位。由于高位是低位的256倍,所以用高位值除于256所得到的数值便是高位的ASCII码值,所得的余数是低位ASCII码的值。
1)为什么求高位ASCII码时除于256?(是不是象10进制化成2进制进除以2一样?int(2006/256)的值相当于10进制化为2进制时的商?)
2)下面二个式子如何对应起来
                         256在WORD中的形式是            CHR(00000000的10进制值)+CHR(00000001的10进制值*256)”
                                                                 低位                  高位
                        

                          2006在WORD中形式              chr(mod(2006,256))      +    chr(int(2006/256))

2012-01-20 11:25
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
认真拜读后很有启发多谢了。你的大作中有的地方还请再指教一下。
《對二進制數據10110000 10001010 11101101,它的十六進制表示形式為0xB08AED,十進制表示形式為11569901(其實都是同一個數,計算機就只認識二進制那個,其餘都是給人看的),是3個8位BYTE數據構成的一串,我們可以用不同的視角看待它。如果是一個完整的整數,它就是十進制11569901;如果是3個整數的數組,它就是十進制{237,138,176},十六進制的{B0,8A,ED};如果是字符串,就是CHR(237)+CHR(138)+CHR(176)》
问题1
(a)如果是3個整數的數組,它就是十進制{237,138,176}它{ }中的值是不是:237->11101101,138-->10001010,176->1011000
   它的顺序与上面二进制数据中的顺序相反,变成低 中  高。是不是你后面讲到的内存格式是低位在前,高位在后?
(b)如果是字符串,就是CHR(237)+CHR(138)+CHR(176)排列顺序相反。同上理由
(c)十六進制的{B0,8A,ED}排列顺序与上面二进制数据是一一对应的,为什么?

<WORD類型,是16位的,由2個BYTE構成,它的內存格式是{a,b},其中a是低位,b是高位(這是Intel處理器的特點,不是所有處理器都是這樣的)。對WORD值0xB0ED來說,我們現在看到B0在前、ED在後,但在計算機內存中其實是ED在前、B0在後,所有整數都是按先低後高的次序一路排列。因此,要轉換0xB0ED為C接受的內存格式,就要按同樣的順序,寫CHR(0xED)+CHR(0xB0),即所謂ED是低位、B0是高位,與人眼看到的0xB0ED相同。對RGB(red,green,blue)顏色值,是CHR(blue)+CHR(green)+CHR(red),這樣格式的內存數據,因為反過來讀,才叫RGB,這個數的十六進制形式,看起來就是藍綠紅。>

问题2
因此,要轉換0xB0ED為C接受的內存格式,就要按同樣的順序,寫CHR(0xED)+CHR(0xB0),即所謂ED是低位、B0是高位,與人眼看到的0xB0ED相同。后半句与前半句不相应,人眼看到的高位在前,低位在后,内存格式是低位在前高位在后。


[ 本帖最后由 sylknb 于 2012-1-20 16:39 编辑 ]
2012-01-20 16:36
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
如指在Intel處理器中
對二進制數據10110000 10001010 11101101


1。如果是3個整數的數組,它就是十進制{237,138,176}
为什么237写在前面,176写在后面。写成{176,138,237}可否?



2。要轉換0xB0ED為C接受的內存格式,就要按同樣的順序,寫CHR(0xED)+CHR(0xB0),即所謂ED是低位、B0是高位,與人眼看到的0xB0ED相同
怎么会相同呢?人看到是0xB0ED,内存放置的是寫CHR(0xED)+CHR(0xB0)
2012-01-20 18:22
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
不是关心的事情,主要是没有C语言的基础,对书上东西看不懂,又不甘心照样画图。
1、如果是3個整數的數組,它就是十進制{237,138,176}
.“這是分離了看,三個數不是整體,不用顛倒”。我就要这个结果。它也是从低位到高位的结论。

2.那是指計算機執行的效果跟人眼看到的相同。加上效果两字让人懂了。
谢谢您!如此耐心,诲人不倦的精神值得让人感动。再祝新年全家安康,万事如意。
2012-01-20 20:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-359876-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.563596 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved