2014年3月16日 星期日

[C & C++]十進制轉換二進制






今天因為程式用到了十進制轉二進制的轉換,但是以前都是使用了陣列的方式存放餘數
再從陣列倒著print出來,就上網google了一下

發現了以前從沒看過的東西,讓我大開眼界!!  先紀錄下來晚點在來研究研究~




依 IEEE 754的規範,float 的 mantissa 占23個位元,再加上一個隱性位元,共24個位元,因此程式顯示出來的二進位,必在24個位元以內。







Q1:
     z <<= 1;這代表什麼意思
A1: 
     z 位元左移一位,相當於 z = z * 2


Q2:
     printf("%d",(x & z) != 0);這又代表什麼意思
A2:
     x & z 是 x 和 z 做 [位元AND] 運算
     (x & z) != 0); 的動作是:
     若上述的運算結果不等於0,結果為 true,即 數值 1;
     否則為 false, 即數值 0














轉貼自yahoo知識+

沒有留言: