GCC是免費的標準C/C++編譯器
GDB是偵錯工具
這些在Linux上常見的工具,被移植到Windows上,相關專案稱為MinGW
不確定能否在Windows上編譯出能在Linux上跑的執行檔,但至少相同的程式碼,不用修改,能在Windows上編譯出執行檔(通常是.exe檔),也能在Linux上編譯出執行檔(沒副檔名概念,通常不會命名為*.exe)
GCC是免費的標準C/C++編譯器
GDB是偵錯工具
這些在Linux上常見的工具,被移植到Windows上,相關專案稱為MinGW
不確定能否在Windows上編譯出能在Linux上跑的執行檔,但至少相同的程式碼,不用修改,能在Windows上編譯出執行檔(通常是.exe檔),也能在Linux上編譯出執行檔(沒副檔名概念,通常不會命名為*.exe)
位於新竹市東區寶山路上,十八尖山桐花廣場對面
免費開放,園區不大,好走,無陡坡,應該不用一小時即可走完一圈
路面大多是泥土路,常下雨的天氣,夜晚或天色不佳時,不適合行走
整合之前寫的字串轉列舉和位元(bit)操作,為了保持.NET命名風格的一致性,位元操作改稱為旗標(flag)操作
之前寫的字串轉列舉沒考慮到多旗標([Flags]Enum)的情況,也在此做更新
更新前的命名風格
BitOperator
參考dadalaohua大的文章:
https://iter01.com/536953.html
反轉byte內的bits,不像反轉集合內的元素順序,呼叫List<T>.Reverse()即可完成,效能要好,要設計出速度夠快的演算法,不容易
原文是C語言,在此微調成C#版本,並附上單元測試
之前文章沒對位元補充(bitwise complement)做單元測試,也在這裡補充紀錄
前一篇只能操作單位元,這裡補充說明多位元操作,原理是把不同位置的旗標先OR起來即可,另外也能練習C#的"|="與"params"語法
單元測試
Convert.ToString(10,2).PadLeft(8,'0')
"00001010"
移位運算(>> / <<),邏輯運算(AND / OR)(& / |),位元補充(~),2進制數值表示(0b),16進制數值表示(0x),相關功能包裝與使用範例紀錄於此
Byte內的位元位置通常從0開始,代稱為:
Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
CheckBit,檢查指定的位元其值是否不為0
接續之前關於PackBCD格式的介紹,利用Convert.ToString強大的功能,將數值資料轉為2進制輸出,觀察PackBCD格式與一般數值格式的差異
輸入資料>=10開始出現差異,因為10被拆成1與0,1被儲存於高四位,0被儲存於低四位
Convert.ToString(1,2).PadLeft(8,'0')
"00000001"
PackBCD格式是一種數值儲存格式,用4個bits紀錄數字0~9,1個byte拆成高四位和低四位,可以儲存00~99
此格式常見於金融財務會計領域,譬如櫃買中心的上櫃股票IP行情網路規格書:
https://dsp.tpex.org.tw/web/system/trainsmit.php
因為不是一般程式語言內建的數字格式,所以直接ToString可能出現亂碼,如下圖
大腿內側騎士,這個小遊戲的配音很有趣,在此介紹
初級模式評價S(分數不明,但不用滿分)得到稱號,突破大氣層的火箭騎士
高級模式評價S(分數不明,但不用滿分)得到稱號,光輝的宇宙騎士
延續之前的擴充ComboBox使用上的方便性1
參考資料
https://github.com/punker76/MahApps.Metro.SimpleChildWindow/issues/69
要取出ComboBox內的TextBox,網路上找到的方法大多是
接續前一篇文章,線上程式設計考試Codility測試題,答案還能再優化,之前想的太複雜了
以下直接暴雷答案,想自行挑戰的讀者請勿往下看
還好Codility沒記憶體使用量測試,上次的答案太浪費記憶體,這次答案減少75%記憶體使用量(int[] -> bool[]),運行速度也更快
有機會看到一個程式設計測試題,要通過題目給的測試案例(Example test cases)簡單,要通過正確性測試(Correctness test cases)有點難,要通過效能測試(Performance test cases)很難,在此記錄心得
測試題全測試項目通過會得到100分
題目:
輸入整數陣列A(int[] A),找到大於0並且不在A裡面,並且最接近0的正整數,再回傳數值
ComboBox不用取得邏輯焦點(!IsFocused),只要滑鼠在ComboBox上方(IsMouseOver),移動滾輪(MouseWheelEventArgs.Delta > 0 or < 0),就能調整選項
延續之前的文章,ItemsControl.ItemsSource關聯字串(string)型態資料檢視,繼續以ComboBoxOrderBuySell作為範例介紹
MouseWheelEventArgs.Delta > 0,代表滑鼠滾輪向上滾(圖左,遠離使用者),< 0,代表向下滾(圖右,靠近使用者)
XAML:
同場加映花蓮的海
鬼斧神工,景色太壯觀,拍照無法容納整個畫面
這是918地震前拍的,希望花蓮重建順利
觀光旅遊是當地的重要產業
光看文字說明很難理解IEnumerable<T>、yield break、yield return的使用方式,這裡紀錄相關程式碼範例和單元測試,幫助理解與記憶
//利用指定分隔符號分隔字串(輸入空白字串則不處理),再按原來順序回傳
static IEnumerable<string> SplitWithoutWhiteSpace(this string obj, params char[] separator)
{
最低水位的情況沒拍到,新聞寫2.6%,乾到見底
多餘的水好像就是白白溢流,有點可惜
有水當思無水之苦,極端氣候成常態,未來2.6%的紀錄還是有可能破
每個月的第幾個星期幾轉DateTime
遊戲可能在每個月的第一、二、三或最後一個週末有分別的活動,
外國的節日也常常是以每個月的第幾個星期幾表示,譬如
母親節(Mother's Day),五月的第二個週日
感恩節(Thanksgiving Day),十一月的最後一個星期四
接續前一篇"將視窗拆成1+2*3的窗格"
MenuItem的熱鍵有兩種,一種是Header值給特定底線('_'),一種是設定InputGestureText
(尚未測試不同的MenuItem給相同熱鍵會不會發生錯誤)
接續之前"將視窗拆成2*3的窗格",要在上面多一行Menu沒想到有點複雜,設定上有些眉角,一點小錯就可能讓排版走位
關鍵在把視窗切割成2*4,再把上面2格合併,配置給Menu
Menu (Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2") |
AA (Grid.Row="1" Grid.Column="0") | AB (Grid.Row="1" Grid.Column="1") |
BA (Grid.Row="2" Grid.Column="0") | BB (Grid.Row="2" Grid.Column="1") |
CA (Grid.Row="3" Grid.Column="0") | CB (Grid.Row="3" Grid.Column="1") |