隨筆-3  評論-0  文章-0  trackbacks-0
            2006年7月16日

          浮點數分為單精度和雙精度,Java中的單精度和雙精度分別為float和double.你們知道float和double是怎么存儲的嗎?

            float占4個字節,double占8個字節,為了方便起見,這里就只討論float類型.
            float其實和一個int型的大小是一樣的,一共32位,第一位表示符號,2-9表示指數,后面23位表示小數部分.

            這里只舉一個例子,希望能拋磚引玉,就是研究一下浮點數0.1的存儲形式,先運行這個程序.


          ?  public class Test{
            public static void main(String[] args) {
            int x = 0x3d800000;
            int i = 1 << 22;
            int j = 1 << 4;
            float f = 0.1f;
            int y = Float.floatToIntBits(f);
            float rest = f - ( (float) 1) / j;
            while (i > 0) {
            j <<= 1;
            float deta = ( (float) 1) / j;
            if (rest >= deta) {
            rest -= deta;
            x |= i;
            }
            i >>= 1;
            }
            pr(x);
            pr(y);
            }

            static void pr(int i) {
            System.out.println(Integer.toBinaryString(i));
            }

            }
          ?
            結果:
            111101110011001100110011001101
            111101110011001100110011001101

            程序說明:
            int x=0x3d80000;
            因為浮點表示形式為1.f*2n-127我們要表示0.1,可以知道n-127=-4,到n=123
            符號為正,可知前9是 001111011,暫時不考慮后面的23位小數,所以我們先假設x=0x3d800000;


          ?  int i = 1 << 22;
            i初始為第右起第23位為1,就是x的第10位


          ?  int j = 1 << 4;

            i初始為4,因為n-127為-4,這里是為了求它的倒數.


          ?  float f = 0.1f;
            int y = Float.floatToIntBits(f);

            y就是它的32位表示


          ?  float rest = f - ( (float) 1) / j;

            這個rest表示除了1.f中的1剩下的,也就是0.f


          ?  while (i > 0) {
            j <<= 1;
            float deta = ( (float) 1) / j;
            if (rest >= deta) {
            rest -= deta;
            x |= i;
            }
            i >>= 1;
            }

            這個循環來計算23位小數部分,如果rest不小于deta,表示這個位可以置為1.

            其他的不多說了,輸入結果是一樣的,可以說0.1這個浮點數肯定是不精確的,但是0.5可以精確的表示,想想為什么吧.


          轉至 www.csdn.net

          posted @ 2006-07-16 13:37 StarShowerJavaWorld 閱讀(311) | 評論 (0)編輯 收藏
            2006年7月13日
          隨著一曲Love in December,Club 8樂隊清新的樂風慢慢滲透向各個區域.澄澈,水晶般透明無瑕......





          成立時間:1995年

          團體成員:
          主唱卡羅林娜·柯姆斯塔德(KarolinaKomstedt);
          詞曲作者、編曲、樂器演奏約翰·昂格伽德(JohanAngergard)



          1995 年,成立Club 8,96年出版第一張唱片《Nouvelle》。七年里,他們曾經在不同的唱片公司出版唱片,其中包括西班牙甜美夏日名廠Siesta公司,后來離開,選 擇了DIY的自主之路,自行制作唱片,然后交由不同的唱片公司發行,因為這樣的方式可以直抒真我情懷。

          樂隊的標志是女主唱 Karolina的飄逸嗓音,七年來,這把聲音在多少個寒風襲來的夜晚給無數孤寂心靈帶來一絲暖意;樂隊的主腦是Johan,他負責Club 8所有歌曲的創作和樂器,同時還和弟弟組成另一支樂隊The Acid Kings;除此之外,以音樂為生的他還擁有一間錄音棚Summersound Studio,出版了很多專供夏日聆聽的愜意聲響;最后,他還是Labrador唱片公司的要員。

          Johan喜歡美國導演Woody Allen,Hal Hartly,以及當地著名作家Ulf Lundell,但Club 8的音樂并非受他們影響,而是受其他熱愛的樂隊和他們自己的生活影響。Johan最喜歡英國樂隊The Smiths,對他來說,這支樂隊開啟了另一個讓人目眩神迷的世界的大門;他深信, The Smiths為所有的Indie Pop樂隊打開了音樂工業的大門;聽到The Smiths,讓很多人大開眼界。

          Club 8有很多怪習慣,比如說他們不希望太出名,又比如說他們覺得瑞典當地的流行榜上多數是一些垃圾音樂。他們也從來不作現場演出,因為樂隊中只有兩個人,現場 演出無法表現所有樂器,除非是事先制作音樂在現場卡拉OK或者邀請其他樂手,但這都是他們所厭惡的;他們討厭彩排,也從來不彩排自己的歌曲----“現場 演奏是浪費時間,我們不喜歡、也無法在現場好好演奏”----仿佛他們生來只為在錄音棚里制作美妙的聲音。他們習慣把歌寫好后,就馬上在自己的錄音棚里錄 音,因為這樣可以更好地保留創作時最初始的感覺。一般來說,他們的歌曲成品做好離創作的時間最多只有一個星期,有時甚至只是幾分鐘。

          Club 8的音樂風格是Anorak Pop和Easy Listening的混合體,類似的聲音我們也許聽過,從前的Sarah Record和新干線唱片公司就有很多情調動人的類似出品,但他們又是獨一無二的。根據Johan自己的形容,Club 8是:“旋律優美的,哀愁、感性、放松的(Melodic,Melancholic,Sensitive,Ease Down)”,他希望在音樂中更好地表達自己,不希望別人聽到他們時說:噢,他們聽起來象誰誰誰。



          無意中在網上還發現了這么好聽歌。雖然和技術無關。但我是這的世界。

          posted @ 2006-07-13 22:56 StarShowerJavaWorld 閱讀(230) | 評論 (0)編輯 收藏
            2006年6月28日

          剛剛申請完blog.結果最近開始考試...
          完了.今年不會再掛了吧.
          結果連我自己的blog都沒辦法布置一番了。

          posted @ 2006-06-28 10:15 StarShowerJavaWorld 閱讀(282) | 評論 (0)編輯 收藏
          僅列出標題  
          主站蜘蛛池模板: 北宁市| 东港市| 龙州县| 勃利县| 武定县| 诸暨市| 三亚市| 峨边| 兴化市| 东乡县| 兴宁市| 小金县| 麟游县| 泸州市| 麻城市| 高唐县| 福建省| 兴城市| 和政县| 通城县| 东阿县| 民和| 且末县| 娄底市| 南皮县| 丹寨县| 灵石县| 凯里市| 南昌市| 金川县| 滦南县| 利津县| 历史| 进贤县| 鄂州市| 綦江县| 西贡区| 芮城县| 磴口县| 逊克县| 临安市|