亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 5683 | 回復(fù): 9
打印 上一主題 下一主題

Binary(4)與Integer(10)等價(jià),why?? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-09-19 15:34 |只看該作者 |倒序?yàn)g覽
本帖最后由 niuhua77 于 2011-09-19 15:38 編輯

引子:
前幾天有人問(wèn)到:同一個(gè)QAPI中的同一個(gè)參數(shù),為什么有的定義成Binary(4),而有的定義成Integer(10),并且二者皆出自IBM 官方的red book。IBM應(yīng)該不會(huì)出現(xiàn)烏龍吧?
比如說(shuō)下面的QAPI:
Create User Space (QUSCRTUS) API
Required Parameter Group:
1         Qualified user space name                                 Input                                 Char(20)
2         Extended attribute                                           Input                                 Char(10)
3         Initial size                                                        Input                                 Binary(4)
4         Initial value                                                      Input                                 Char(1)
5         Public authority                                                Input                                 Char(10)
6         Text description                                               Input                                 Char(50)

另一種定義版本:
Create User Space (QUSCRTUS) API
1         Qualified user space name                                 Input                                 Char(20)
2         Extended attribute                                           Input                                 Char(10)
3         Initial size                                                        Input                                 Integer(10)
4         Initial value                                                      Input                                 Char(1)
5         Public authority                                                Input                                 Char(10)
6         Text description                                               Input                                 Char(50)
我非常遺憾的告訴大家,IBM沒(méi)有犯這么低級(jí)的錯(cuò)誤,實(shí)際上二者是等價(jià)的?紤]到可能有像我一樣的新手存在疑惑,下面就解釋一下二者為什么等價(jià)。

首先說(shuō)明一下各種數(shù)據(jù)類型,不同的數(shù)據(jù)長(zhǎng)度所占的字節(jié)數(shù)(根據(jù)red book,不要問(wèn)我why):

數(shù)據(jù)類型                      字節(jié)與位數(shù)的關(guān)系             取值范圍
B(Binary):                   2bytes能表示4位數(shù)          -9999 ~ 9999
                                 4bytes能表示9位數(shù)          -999 999 999 ~ 999 999 999   

I(Integer):                 1bytes能表示3位數(shù)           -128 ~ 127  
                                2bytes能表示5位數(shù)           -32768 ~ 32767  
                                4bytes能表示10位數(shù)         -2147483648 ~ 2147483647
                                8bytes能表示20位數(shù)   

U(Unsigned):             1bytes能表示3位數(shù)            0 ~ 255      
                                2bytes能表示5位數(shù)            0 ~ 65535
                                4bytes能表示10位數(shù)          0 ~ 4294967295
                                8bytes能表示20位數(shù)          0 ~ 18446744073709551615

P(Packed):                 1bytes能表示1位數(shù)            -9~9
                                2bytes能表示3位數(shù)            -999 ~ 999
                                3bytes能表示5位數(shù)            -99999 ~ 99999-
                                4bytes能表示7位數(shù)            -9999999 ~ 9999999
                                …………

S(Zone):                   1bytes能表示1位數(shù)           -9 ~ 9
                                2bytes能表示2位數(shù)           -99 ~ 99
                                3bytes能表示3位數(shù)           -999 ~ 999
                                4bytes能表示4位數(shù)           -9999 ~ 9999
                                 …………

之所以說(shuō)B(4)=I(10)是等價(jià)的,主要從兩方面考慮,各自所占字節(jié)數(shù)和各自的取值范圍。
1 所占字節(jié):B(4)=4bytes  ,I(10)=4bytes 二者相等。
疑問(wèn):其他的數(shù)據(jù)類型也有占4bytes的[U(10)、P(7)、S(4)],為什么不能和B(4)等價(jià)呢?接著往下看:
2 取值范圍:B(4): -999 999 999 ~ 999 999 999
                I(10): -2 147 483 648 ~ 2 147 483 647         
I(10)的取值范圍完全包含B(4)的取值范圍,從這兩點(diǎn)上看,B(4)和I(10)是等價(jià)的。
下面再回答上面的疑問(wèn):
B(4)的取值范圍并不能完全包含于U(10)、P(7)、S(4),總有一部分?jǐn)?shù)值無(wú)法取得,所以B(4)不能與U(10)、P(7)、S(4)等價(jià)
以上就是Binary(4)與Integer(10)等價(jià)的原因啦。

注釋1:
不過(guò)以Initial size      Integer(10)這個(gè)參數(shù)為例,B(4)實(shí)際上又等價(jià)與U(10),因?yàn)镮nitial size這個(gè)參數(shù)必須是大于0的(The initial size of the user space being created. This value must be from 1 byte to 16, 776, 704 bytes),B(4)的取值范圍實(shí)際上是:1 ~ 999 999 999,而U(10)的取值范圍:0 ~ 4294967295,遠(yuǎn)遠(yuǎn)超過(guò)999 999 999了,所以B(4)與I(10)也是等價(jià)的。

這個(gè)例子就是想告訴大家,QAPI的參數(shù)定義是很靈活的東西,不一定非得按部就班,熟悉個(gè)中緣由之后,自己可以根據(jù)實(shí)際需要,靈活的定義數(shù)據(jù)類型。

注釋2:
有同學(xué)問(wèn),那B(8]等價(jià)于I(20)咯??
答案:NO!!
因?yàn)槎M(jìn)制數(shù)據(jù)僅有B(2)  B(4)兩種,不存在B(1) B(3) B(8]等。系統(tǒng)會(huì)根據(jù)數(shù)據(jù)的位數(shù)自動(dòng)分配2byte(4位數(shù))和4bytes(5-9位數(shù))。過(guò)9位數(shù)的話,系統(tǒng)會(huì)反白提示錯(cuò)誤。

請(qǐng)大家選擇性的參考,歡迎指正。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2011-09-19 16:15 |只看該作者
回復(fù) 1# niuhua77


    前兩天也被這個(gè)問(wèn)題搞暈了,不明白為什么二者相等,不過(guò)看了您的帖子,有些明白了!
   很不錯(cuò),

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2011-09-19 16:30 |只看該作者
回復(fù) 1# niuhua77


    想問(wèn)您一個(gè)問(wèn)題!
   您帖子中的B(4)中的‘4’是什么含義,是4BYTES的意思嗎?I(10)是表示10位的I吧!如果B(4)中的‘4’是表示4位的B,也不相等了啊!

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2011-09-19 16:57 |只看該作者
回復(fù) 3# mylife400

你好!

    B(4)的意思是4位的二進(jìn)制數(shù)據(jù)(Binary) 4位的Binary占4bytes
    I(10)的意思是10位的整形數(shù)據(jù)(Integer)  10位的Integer也占4bytes
    這里4和10并非bytes數(shù),而是指每種數(shù)據(jù)類型的長(zhǎng)度。從長(zhǎng)度(位數(shù))到所占字節(jié)數(shù)有一個(gè)轉(zhuǎn)換的過(guò)程

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2011-12-22 08:58 |只看該作者
這個(gè)二進(jìn)制和以前學(xué)的二進(jìn)制果然不太一樣。。。:wink:

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2011-12-22 09:05 |只看該作者
文章中有說(shuō)  一、“B(Binary):                   2bytes能表示4位數(shù)          -9999 ~ 9999”
            二、“系統(tǒng)會(huì)根據(jù)數(shù)據(jù)的位數(shù)自動(dòng)分配2byte(4位數(shù))”

            三、所占字節(jié):B(4)=4bytes  
                  四、B(4)的意思是4位的二進(jìn)制數(shù)據(jù)(Binary) 4位的Binary占4bytes

看起來(lái)一&二 和 三&四有點(diǎn)矛盾,求分析求解釋啊

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2011-12-22 20:29 |只看該作者
其實(shí)二進(jìn)制最后在系統(tǒng)中也是用十進(jìn)制來(lái)表示的。比如說(shuō)1 byte = 8 bit = 2的8次方=256(十進(jìn)制),就是說(shuō)1個(gè)字節(jié)能表示的范圍是從0-256

2 bytes = 16 bit =2的16次方=65536 即2個(gè)字節(jié)表示的十進(jìn)制范圍是0-65536,但是AS400系統(tǒng)有限制,它把2字節(jié)的二進(jìn)制表示范圍縮小了,只能表示0-9999。超過(guò)9999的部分就被系統(tǒng)舍棄掉了。 一個(gè)十進(jìn)制的數(shù)字,長(zhǎng)度小于等于4,(即小于9999),如果要用二進(jìn)制表示的話,那么系統(tǒng)就給這個(gè)數(shù)字分配2個(gè)字節(jié)。即使這個(gè)數(shù)字=8,用1 byte就能表示了,但是系統(tǒng)還是會(huì)分配2個(gè)字節(jié)給他。

不知道你想表達(dá)的意思是這樣不?傊憔桶讯M(jìn)制想成十進(jìn)制就好了

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-12-06 17:47 |只看該作者
樓主,研究的很深啊。佩服

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2012-12-06 22:10 |只看該作者
回復(fù) 8# ping222s


   

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2012-12-08 20:42 |只看該作者
回復(fù) 9# niuhua77

這倆天研究了一下,并且查了ibm的說(shuō)明。
好像在程序里面定義4B,和4p在結(jié)果上是一樣的。最大數(shù)位9999。
但是如果某個(gè)檔案里面有字段A,類型為4B
H Extbinint(*Yes)

FXXXF   IF   E                 K Disk
D TTT                S                          Like(A)

如上,則TTT和10I,0是一樣的。


   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP