作者LPH66 (-858993460)
看板java
标题Re: [问题] Java byte 存入 Oracle Raw Data Type …
时间Fri Sep 30 03:39:37 2011
: → PsMonkey:宣告是给人看的... 09/29 21:55
: ※ 编辑: gimmy731031 来自: 122.146.83.43 (09/29 21:58)
: → gimmy731031:恩恩~那如果存RGB不需给人看的话,是用binary存入吗?想 09/29 22:03
: → gimmy731031:了解系统是如何做到将二进制值传给byte @@? 09/29 22:06
: → gimmy731031:补充一下RGB不需给人看是因为pixel会自动抓取RGB数值 09/29 22:08
: 推 LPH66:对电脑来说 0xFF 255 0377 (二进位的)11111111 都是一样的 09/29 22:20
: → LPH66:程式中不管你怎麽写最後存进电脑就一定是二进位的值 09/29 22:22
: → LPH66:不管你是做什麽运算 什麽资料 通通都是一样的 09/29 22:24
: → LPH66:只是 Java 7 之前我们不能直接在程式里写上 0b11111111 而已 09/29 22:26
: → LPH66:你只要想成电脑记的是 255 这个数而不是 '2' '5' '5' 三个字 09/29 22:31
: → LPH66:就不会被进位问题困扰了 (话说我这样推好像不如另起新文..) 09/29 22:32
: → gimmy731031:感谢L大~在网路上有看到相同的说法,但Raw只能读取2进 09/29 22:39
: → gimmy731031:制,给255系统应该还是要另外转换成binary,如果直接 09/29 22:42
: → gimmy731031:能给binary值,系统就不用转换了~还是我观念有误@@? 09/29 22:44
: 推 waterleader:bianry->binary 09/29 22:45
: → gimmy731031:阿阿~打字没注意到^^" 09/29 22:49
: → james732:我知道原po的问题,但实在不知要怎麽讲才会清楚... 09/29 23:12
: ※ 编辑: gimmy731031 来自: 122.146.83.43 (09/30 00:32)
: ※ 编辑: gimmy731031 来自: 122.146.83.43 (09/30 00:33)
: → sbrhsieh:数值就是数值,没有进制之分. 进制是描述数值的方式 09/30 01:10
这麽说好了 就算需要转也不是你的程式在转
而是编译器/直译器在编译时就先翻好了 程式只是拿来运算而已
(编译器例如你写 java 程式时用的 javac
直译器例如你原来问题里分析 SQL 语言的程式)
不管你在程式里写 0xFF 255 0377 0b11111111 都一样
经过翻译之後电脑只会看到一个数 它的值是 255
你可以把它理解成数学上的两百五十五这个数这种感觉
就算你把它写成十六进位的 0xFF 或是八进位的 0377 甚至是二进位的 0b11111111
本质上它还是 255 这个数
其他地方的资料(不管是磁碟/资料库/还是什麽劳什子的资料来源)也是一样的
说到底那些不过都是些数而已 (连我们在打的这些字电脑看起来都是数)
你会有这种问题是因为电脑看数的方式和人类不一样
同样表示数学上两百五十五这个数
我们人类用十进位来看所以写成 255
电脑用二进位来看所以"写"成 11111111
这样而已
将你的 java 程式或 SQL 里写的 255 这三个字翻成数学上的 255 这个数的工作
则是编译器/直译器帮你完成的
再来 我刚刚提到其他的什麽资料来源也不过就是许多数
(你可以把那些资料理解成一大串范围在 0~255 之间的数)
那麽程式读取资料就只不过是把这些数搬进他的程式记忆空间里去罢了
既然两边都是数 概念上就不存在什麽进制问题
只是单纯的把这些数拿来运算而已
那当然为了要能够"算"得要有个形式
就像我们人类在运算数字是会藉由十进位的形式运算一样
电脑在运算这些数字藉由的是二进位的形式 如此而已
所以上面写的"翻成数学上的 255"字面上来说其实不太对
实际上它是翻成电脑藉以运算的二进位形式
这样电脑才能够用它的方式来做这些数的运算
这样不知道你脑筋里的结转开没有...?
--
总感觉偏题偏到计算机概论的东西去了....orz
--
LPH [acronym]
= Let Program Heal us
-- New Uncyclopedian Dictionary, Minmei Publishing Co.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.24.106
※ 编辑: LPH66 来自: 140.112.24.106 (09/30 03:40)
1F:推 PsMonkey:祭司那边的 SQL 是怎麽下... 这可能才是原 po 的问题根源 09/30 07:40
我打这篇文时完全忘了他的问题是 SQL...我修一下文字
※ 编辑: LPH66 来自: 140.112.28.92 (09/30 16:52)
2F:推 gimmy731031:真的非常感谢前辈们的指点,我脑袋终於通了~这里厚颜 09/30 22:12
3F:推 gimmy731031:想另外请教0b11111111和Interger.valueOf("11111111") 09/30 22:15
4F:→ gimmy731031:,2),是否底层都是用for回圈计算其int值呢?感谢感谢~~ 09/30 22:19
5F:→ gimmy731031:底层使用int b = 1*(2^0)+1*(2^1)...这样算出b的值呢? 09/30 22:49