程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 我也要學C語言-第四章:數據的表示與位的操作

我也要學C語言-第四章:數據的表示與位的操作

編輯:關於C語言

大家好!我看到大家的留言很開心!大家說的dudu我搜尋了下,哦!原來dudu是這個博客的鼻祖啊!!!就像朋克中的雷蒙斯!!!嘿嘿!其實我現在學習呢!我不知道我以後會學什麼!但是我決心把我不懂的計算機中對我來說最神奇的東西,我想要去搞清楚!其實我是從什麼時候開始對計算機感興趣的呢,就是一次偶然的經歷!我當時在看一本雜志!裡面有一篇文章叫“中國最美麗的黑客MM”。我對這個很好奇!因為我之前只是聽說過黑客這個詞!在新聞裡,常常用來表示利用計算機,計算機網絡技術進行犯罪的人!我當時對這個很討厭啊!後來我搜尋了網絡,居然,黑客這個詞在早起是褒義的!所以我對“中國最美麗的黑客MM”很是崇拜!我後來加了她QQ!我想也業余學習學習!但是我在她的網站上沒有看到很系統的學習方法,講的東西都讓我摸不著頭!於是呢!我就買了大量的計算機書籍!只要是人們評價不錯的,我基本上一本不差的買了!我在很多書上發現書名都好可愛啊!比如:C語言的科學與藝術,C++沉思錄等好多好多名字都那麼有藝術氣息!然後在一篇名為“如何成為一名黑客”的文章中按照它的指引一步一步來學。我覺得呢,學習就是一種快樂!我希望大家看到我的學習筆記有錯誤的時候馬上告訴我,然後我馬上去修正自己的錯誤!關於python我現在想把C語言學得差不多了後,還有匯編,操作系統原理,編譯原理這些基礎知識差不多熟練後再進行PYTHON的學習,因為我發現學Python的時候我不知道解釋器到底都做了些什麼,心底始終沒有底的感覺!!!我在計算機方面的理想是,我只想擁抱著天,我只想要瓶可樂,我只想敲著鍵盤輸出自己的快樂!哈哈哈!

一:進制

  關於數值與編碼的學習,剛開始一個小時真的一頭霧水!由於本身我呢對數學不敏感(我是音樂學院畢業的!後來發現和基礎數學關系不大啊!嘿嘿!),後來慢慢的有點點感覺了!為什麼要有這個進制這個東西呢!因為這個世界上啊!好多好多的東西!這些東西在人們面前如果沒有一個明確的標記,就無法很精確的描述它.比如!這是我昨天晚上做的一個夢“兩個古代的人在一起比賽射箭!最後看誰射在箭靶上的箭數量多!過了好一會兒,兩個人的箭靶上的箭都扎得密密麻麻了!於是兩個人都說自己的箭多!然後就打起來了!後來!兩個人都想了想,我們必須找一種符號來描述我們可能無限多的箭的數量,這樣標記下來我們才知道誰贏了!就這樣兩個人琢磨著如何來標記啊!其中一個人說道,哈哈有了!你看我們都有10個手指頭,我們就用手指頭來標記吧!嗯!這個想法不錯啊!然後1個人每拔1根箭就數1個手指頭,然後手指頭數完了就讓另外1個人數1個手指頭,也就是到10個箭的時候,就用另外一個人的1個手指頭表示!這樣1個人用手指頭表示最低位,另外一個人用1個手指頭表示最低位的左移一位!不一會兒他們誰贏了一下子就清楚了!”

  十進制 剛才呢那兩個射箭的人用10個手指去標記了箭的數量!這個其實就是為什麼人們常用十進制的原因(深入理解計算機系統上面學到的!嘿嘿!為什麼要提一下出處,是因為好多的知識都是我每天看書學到的,所以和學習計算機時間的長度無關的!)然後呢!十進制有個很大的特點,就是一個十進制數都可以分解成各位數字和它所在位的權值的總和(權值這個詞我理解了好一會啊!原來是這樣的,一個十進制數最右邊那位權值是1,然後往左依次是10,100,1000。。。因為那個夢裡數劍每到10都進了1位)。就是這樣:

3*1000+4*100+5*10+6*1=3456

所以呢,其他任何進制轉化為十進制都非常的簡單了!!!只要把握住位權就可以了!

  十進制轉二進制其實呢,這個是用除2取余呢!一直除到0位置哦!但是要注意一個地方啊!就是最後的結果是從下往上看的哦!

  邪惡八進制 我當時搜尋關於黑客的訊息的時候,我發現了1個論壇叫“邪惡八進制”。我當時覺得這個名字好邪惡,好奇怪啊!現在我明白了,因為早起有些計算機是八進制的,為什麼呢!因為二進制的數字都好長好長的!為了達到精簡!但是為什麼偏偏是八進制,十六進制呢,因為,八進制和十六進制都是二進制的倍數啊!例如,八進制數就是3位為一段的,每位分別轉為八進制數就可以了,相應十六進制就是4位為一段。 

二:位操作

   位操作符呢一共有6種,分別是按位與,按位或,按位異或,取反,左移,右移。

      按位與(&):就是參加與運算的兩方呢,都是1的時候,結果就是1呢,其他情況呢就結果就為0。

      按位與的基本作用:當我們知道按位與的特點以後,我們就可以實現一些有用的功能了:

              (1)實現清零:因為與運算的雙方必須都為1的時候,結果才為1,所以,要使1個單元清零呢,就可以把它與0做與運算。例如:

#include<stdio.h>

int main(void)
{
int x = 2002;
x = x & 0;

printf("%d ", x);

return (0);
}

                (2)隨意取位:同理,你如果想取其中的哪些位就用這個數與上1個自己構造的一個數,其中為1的位就全部取出來啦!

    按位或(|):這個就是指運算雙方只要有1個為1,那麼結果就為1.這樣的話,按位或也可以用來做全位置1的操作,這個操作和上面的與相仿,所以我就不寫代碼了。

    按位異或(^): 這個呢就是參加運算的兩個二進制位相同,結果就為0,反之,結果就為1.哈哈!這就不難看出,任何數和0異或了後,和沒有異或一樣啊!

#included<stdio.h>

int main(void)
{
int x = 1992;
x = x & 0XFF; /*因為1個F代表一個四位全1的二進制數*/

printf("%d ", x);

return (0);
}

真有趣!;而且還有個有趣的功

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved