- 分享
- 0
- 人气
- 0
- 主题
- 7
- 帖子
- 4707
- UID
- 82675
- 积分
- 5108
- 阅读权限
- 22
- 注册时间
- 2007-6-18
- 最后登录
- 2021-7-27
- 在线时间
- 5767 小时
|
原帖由 毛毛小子 于 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 编辑 ] |
|