| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 828 人关注过本帖
标题:数值类型和字符类型存储方式的区别。
只看楼主 加入收藏
yangt
Rank: 2
等 级:论坛游民
帖 子:49
专家分:20
注 册:2012-11-28
结帖率:61.11%
收藏
 问题点数:0 回复次数:10 
数值类型和字符类型存储方式的区别。
突然想到的。
我们要存储一个数比如-333666.555888000,如果用float来表示只需用四个字节内存,如果要用char来表示是不是就需要17个字节,是这样的吗?真是个初级的问题,但我还是想搞明白。
2014-01-19 20:48
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
0分

DO IT YOURSELF !
2014-01-19 20:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
重點是數據的容量,即包含信息的多少。

授人以渔,不授人以鱼。
2014-01-19 21:07
yangt
Rank: 2
等 级:论坛游民
帖 子:49
专家分:20
注 册:2012-11-28
收藏
得分:0 
ASC编码是用单字节表示各种字符。
关于数学的数值编码显然不是用的ASC编码。
比如数字“3”,ASC码应该是:00110011;如果定义一个短整形应该是:00000000 00000011(中间的空格只是为了区分字节),
在比如数字“15”,ASC码应该是用两个字节:00110001 00110101 ;短整形应该是:00000000 00001111 。
是不是这样呢?大哥哥。 不知道用半浮点数表示个“15”应该是怎样个二进制编码。


[ 本帖最后由 yangt 于 2014-1-20 23:22 编辑 ]
2014-01-19 21:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
看得出你對編碼沒什麽概念。從頭教你又要長篇大論,不如自己先看看書。總的說來,你對ascii和編碼的理解是大錯特錯的。

授人以渔,不授人以鱼。
2014-01-19 21:47
w851777025
Rank: 7Rank: 7Rank: 7
来 自:新疆
等 级:黑侠
威 望:2
帖 子:135
专家分:584
注 册:2014-1-19
收藏
得分:0 
原来那是……大错特错。不过还是要感谢你,让我少走弯路了。我是新手,对那些还没什么概念。
2014-01-20 01:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
以下是引用w851777025在2014-1-20 01:17:00的发言:

原来那是……大错特错。不过还是要感谢你,让我少走弯路了。我是新手,对那些还没什么概念。

字符,是把什麽數據理解爲字符的概念。正如26個英文字母,你可以按順序把1-26的自然數視爲這些字母的順序號,也可以把0-25作爲順序號,從10000開始也沒問題,甚至用小數也可以,祇要數據不重複,用任何數據都可以,顛倒了行,不按順序來也行——這其實就是密碼對照表。ascii編碼,祇不過是衆多字符編碼方案中的一個,但世界上還有很多英文字母表示不了的字符(像英國的字母編碼就不完全與ascii圖案一樣)。在當今國際化的環境,字符編碼已經不再是ascii那樣是7位二進制編碼了,有16位甚至是32位的,想當然字符就是單字節的自然數,那是不行的。不同的環境,可能有不同的編碼,數據可能不同,儲存容量也可能不同,這一點必須牢記,不要再ascii編碼包打天下,動不動就加減32變換大小寫,用字符型數據與整數運算之類暗藏隱患的方式,最好戒了(可惜很多人還以這種方式爲能,自以爲懂了技術深層,深入機器内部了,殊不知這其實是大戒)。爲什麽說字符型和整型不是一回事,就是這個道理,絕大多數給人用的編程語言都不允許那種用法,祇有機器人才那樣——當然如果懂變通還不錯,若是僵化思維就完蛋了。

把7位二進制數編排爲ascii字符的檢索碼,是因爲當時使用的字符就祇有這麽127個,隨著字符數量的增多,索引號越來越多,編碼長度也不斷變化,這就是與信息容量相關的意思。再説一遍,這祇是索引碼(如數組的下標一樣,所謂加密就是把數組的内容打亂了),不是字符本身,計算機要呈現字符,是按照索引碼從字庫中提取圖案輸出到顯示設備上的——理論上你可以編程使用任意的索引碼,祇要檢索字庫圖案正確即可。浮點數的方案,并不是簡單地按位使用二進制數據,它分幾部分,其中有冪次方部分,每個部分如何劃分、如何使用,也是有多種方案的,視如何取捨有效位數和精度而定(有一些浮點數方案,是偏重精度的,專用于金融數據,它數據範圍較小,但精度高),也不是一概而論的。一般來説,如果你不是做底層設計的,不需要理會這種細節,按規定用即可——在編程的世界,有時知道得少對你是一種保護,起碼可以按正常邏輯使用語言,確保不會帶來各種未知的副作用。

[ 本帖最后由 TonyDeng 于 2014-1-20 12:14 编辑 ]

授人以渔,不授人以鱼。
2014-01-20 12:08
西安郑鑫
Rank: 7Rank: 7Rank: 7
来 自:陕西
等 级:黑侠
帖 子:163
专家分:624
注 册:2013-9-26
收藏
得分:0 
额,怎么是繁体字

Hello World!------鑫花璐放
2014-01-20 12:59
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:0 
以下是引用西安郑鑫在2014-1-20 12:59:37的发言:

额,怎么是繁体字
因为他在台资厂上班.
2014-01-20 15:49
yangt
Rank: 2
等 级:论坛游民
帖 子:49
专家分:20
注 册:2012-11-28
收藏
得分:0 
以下是引用yangt在2014-1-19 21:44:38的发言:

ASC编码是用单字节表示各种字符。
关于数学的数值编码显然不是用的ASC编码。
比如数字“3”,ASC码应该是:00110011;如果定义一个短整形应该是:00000000 00000011(中间的空格只是为了区分字节),
在比如数字“15”,ASC码应该是用两个字节:00110001 00110101 ;短整形应该是:00000000 00001111 。
是不是这样呢?大哥哥。 不知道用半浮点数表示个“15”应该是怎样个二进制编码。
那您能不能用一个实例来说明简短的一下呢?比如数字“15”,用ASC码应该是怎样?短整形应该是怎样?
2014-01-20 23:26
快速回复:数值类型和字符类型存储方式的区别。
数据加载中...
 
   



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

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