Facebook Sharer
选择您要替换的背景颜色:
【农历新年】背景图片:
个性化设定
 注册  找回密码
查看: 2047|回复: 18
打印 上一主题 下一主题

Java 一些疑问,疑惑

[复制链接]

2

主题

0

好友

6008

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

跳转到指定楼层
1#
发表于 2009-7-18 05:38 PM |只看该作者 |倒序浏览
Bitwise Operation ,这个东西我很混乱,需要上网找那些byte 号码吗?
比如1的话就是00000010 bit
可是到了反的话,-2 就是 11111110
| ,&,^ 这些算法我看得懂,只是不大了解反byte的数据




收藏收藏0

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

2#
发表于 2009-7-18 06:53 PM |只看该作者

回复 #1 毛毛小子 的帖子

哦? 00000010 不是2 吗? 我记得00000001 才是 1 ,00000000 是0
Java 的课本里好像有这类的东西。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

3#
发表于 2009-7-18 07:09 PM |只看该作者
原帖由 毛毛小子 于 2009-7-18 05:38 PM 发表
Bitwise Operation ,这个东西我很混乱,需要上网找那些byte 号码吗?
比如1的话就是00000010 bit
可是到了反的话,-2 就是 11111110
| ,&,^ 这些算法我看得懂,只是不大了解反byte的数据




首先 1 的話應該是  0000 0001 才對
在程式中所有的語言最終會 compile 為機械語言(0 和 1)在電腦中做為溝通, 這是學習程式語言最開始會知道的,
要了解 binary 的話就要看你開始學習程式語言的時候有沒有把基本功打好

在開始學習語言的時候, 所有課本幾乎都會讓你了解甚麼是資料型態(Data Type),
而每個型態所佔用記憶體中多少個 byte 也都會清清楚楚的寫出,
所以 1 byte 就等於 8 bits, 也就是 8 個 0/1 組成(0000 0000 ~ 1111 1111)
0000 0000 = 0
1111 1111 = 255
怎麼計算出 1111 1111 會等於 255 呢, 接下來就看看這個例子的演算

= 0000 1000
= (0*2^7)+(0*2^6)+(0*2^5)+(0*2^4) + (1*2^3)+(0*2^2)+(0*2^1)+(0*2^0)
= 0+0+0+0 + 8+0+0+0
= 8

注 : 2 ^ 7 = 2 的 7 次方


再來如何從 8 轉換成 binary, 這是小學開始學習除法就學過的計算方式

2 |__8__ - 0
2 |__4__ - 0
2 |__2__ - 0
        1

紅色 = 餘數
把 8 除 2 得餘數 0,  再來 4 除 2 也剩下餘數 0, 2 除 2 的餘數還是 0, 最終剩下 1
把這些紅色的數字倒反寫出來即可得到 1000 , 也就是所要求出的 binary 值,
之後就看看自己的資料型態為多少 bytes 才在前方補上 0


p/s: 或者使用電腦中的 calculator 可計算



最後要說明的是 1 個 byte 可份為 unsigned 和 signed 值
unsigned = 0~255
signed = -128 ~ 128

而程式中預設一般都是為 signed, 所以在程式中遇到 signed 的變數的話, 機器語言就會把最左邊第一個 bit 作為標記 0 = signed, 1 = unsigned.





而 &, |, ^, ~, <<, >> 等的 bitwise operator 就是方便讓你做 bitwise 的運算
這些自己回首一下自己的課本或者電子書
一般上如果下載或購買書籍的話, 最好是找書名有 Bible 或 Black Book 等的字眼
這一類的書籍會把所有結構說明的很清楚, 自於自己喜不喜歡看那麼多字就可決定自己對程式語言的熟悉度了

[ 本帖最后由 Super-Tomato 于 2009-7-18 07:14 PM 编辑 ]


回复

使用道具 举报

2

主题

0

好友

6008

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

4#
发表于 2009-7-18 10:02 PM |只看该作者

回复 #3 Super-Tomato 的帖子

我的算法跟你不一样
我的是:

765  43210  
1111 1111

哦,
原来最大是255,大概跟Networking的差不多一样,ASCII 是 2^8 = 256,一个IP address里面的那些


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

5#
发表于 2009-7-18 10:32 PM |只看该作者

回复 #4 毛毛小子 的帖子

最最最最最简单简单 Binary 去 Decimal 的convert 方法 也是最快的。

有几种方法来转换。

方法1 : 所见即得

128    64   32    16      8     4      2      1
     1       1    1       1      1     1      1      1

把所有 1 的Decimal + 起来。
得到 255 == max 2^8.

                128    64  32  16  8   4    2     1
假设现在 1        0    0    0    0    0    1    0

128 + 2 = 130;

方法2 : 电脑计算
把电脑计算机转换成 Scrientific 模式就行了。


_______________________________________________________________________

另外就是, 请问 super-tomato 是怎么看到Action Script 里的"值"的? 很疑惑。


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

6#
发表于 2009-7-18 11:07 PM |只看该作者
原帖由 毛毛小子 于 2009-7-18 10:02 PM 发表
我的算法跟你不一样
我的是:

765  43210  
1111 1111

哦,
原来最大是255,大概跟Networking的差不多一样,ASCII 是 2^8 = 256,一个IP address里面的那些



資料型态最终都是以 binary 为基础, 所以怎么运用是看自己的了解和使用變化




原帖由 宅男-兜着走 于 2009-7-18 10:32 PM 发表
最最最最最简单简单 Binary 去 Decimal 的convert 方法 也是最快的。

有几种方法来转换。

方法1 : 所见即得

128    64   32    16      8     4      2      1
     1       1    1       1      1  ...


你是说 kelvinTang 嗎?? 只要有经验的 programmer 可以用透过几种方式來取得, 所以最好不要把 constant 值直接放在 AS 中,安全性太低了


回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

7#
发表于 2009-7-18 11:48 PM |只看该作者

回复 #6 Super-Tomato 的帖子

  哦~ 就只是放爽的。
但是很好奇你是怎么读到的
可以方便透露透露下吗?


回复

使用道具 举报

2

主题

0

好友

6008

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

8#
发表于 2009-7-19 01:16 AM |只看该作者

回复 #6 Super-Tomato 的帖子

有点混乱中,需要时间来了解,>> 跟 <<我也是还在摸索当中   。。。
因为突然遇到这种东西,一时转不过来


回复

使用道具 举报

2

主题

0

好友

6008

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

9#
发表于 2009-7-19 01:26 AM |只看该作者
可是,你们说的我大致上都了解,正向值我可以了解
但是,我有个比较不明白,就是那个“反向值”,每次一反我就不大明白了


回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

10#
发表于 2009-7-19 03:57 AM |只看该作者
原帖由 宅男-兜着走 于 2009-7-18 11:48 PM 发表
  哦~ 就只是放爽的。
但是很好奇你是怎么读到的
可以方便透露透露下吗?



呵~~~ 這沒甚麼稀奇的, 我用 Flash 那麼多年了, 多多少少能夠發掘一些方法
我不太喜歡談論怎麼去破解, 所以最普通的方法你可以嘗試從這個圖片中去了解,
當然要如何防止的方法也不難, 自己想想一下吧






原帖由 毛毛小子 于 2009-7-19 01:26 AM 发表
可是,你们说的我大致上都了解,正向值我可以了解
但是,我有个比较不明白,就是那个“反向值”,每次一反我就不大明白了


你只要把負值想像成一個圓周就不難理解了, -30度也就是 =330度, 這樣的提示可以讓你去慢慢研究掌握了 em0011


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-11-19 09:31 PM , Processed in 0.111609 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Ultra High-performance Dedicated Server powered by iCore Technology Sdn. Bhd.
Domain Registration | Web Hosting | Email Hosting | Forum Hosting | ECShop Hosting | Dedicated Server | Colocation Services
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | ICORE TECHNOLOGY SDN. BHD.
回顶部