原创 移位運算及其compiler-dependent

C中的移位操作,其實內容不太多,但是有一些小的細節,需要注意,以便碰到特定問題,我們能有思路去分析。 移位操作主要分爲: Shift(Left, Right),Circular Shift(Left, Right)。從移位的性質看,主要分

原创 UDP實現可靠數據傳輸

UDP沒有Delievery   Garuantee,也沒有順序保證,所以如果你要求你的數據發送與接受既要高效,又要保證有序,收包確認等,你就需要在UDP協議上構建自己的協議。比如RTCP,RTP協議就是在UPD協議之上專門爲H.323

原创 二進制操作

關於二進制操作很常見,很多筆試面試題中也有涉及,本篇主要圍繞二進制翻轉,二進制最高位判定和給定整數的二進制輸出來探討靈活使用二進制的&,|,!,》,《操作。 一、給定整數的二進制翻轉 思路:可以考慮逐次翻轉得到最終的翻轉結果,具體做法,首

原创 位運算求解兩個數的平均值

1. 給定兩個數x和y,樸素算法求解兩個數的平均值是(x+y)/2,但是這種方法有個問題就是當x和y的和溢出的時候得到的平均值是錯誤的,我們可以採用位運算來解決這個問題。     一般對於x和y不大的時候,利用(x+y) >> 1可以

原创 位段(bit-field)

一、位段結構 struct node { unsigned int a:4; //位段a,佔4位 unsigned int :0; //無名位段,佔0位 unsigned int b:4;

原创 Big-endian 和 Little-endian 詳解

網上有一篇博文分析的非常詳細,這裏列出參考地址:http://blog.csdn.net/ce123_zhouwei/article/details/6971544 這裏自己列出一些覺得重要的地方,供後續參考。 一、大小端定義  Big-

原创 指針強制轉換

C 和 C++ 的指針強制轉換時不太一樣的, C++ 提供了4中類型,用於更加精細化控制指針的強制轉換。 1、指針轉換原理 討論指針的強制轉換之前,我們先要理解清楚指針的根本含義。最通俗的解釋,指針即是地址,但是,指針絕不僅僅只是地址。

原创 數據庫索引的實現原理

強烈建議參閱鏈接:http://www.linezing.com/blog/?p=798#nav-1 說白了,索引問題就是一個查找問題。。。 數據庫索引,是數據庫管理系統中一個排序的數據結構,以協助快速查詢、更新數據庫表中數

原创 C函數調用原理及函數棧幀分析

之前在看關於內聯,宏和普通函數調用的時候想到了這個問題,感覺自己對函數調用底層的過程原理還是不太清楚,特意查了相關資料,這裏分析記錄下。 1、基礎知識 1.1 基本概念 每個進程對應一個Call Stack(調用棧),而CallStack

原创 C語言符號擴展

C語言中,符號擴展非常常見,大體一般發生在 a =b, 而 a、b爲不同數據類型情況下。 一、短數據類型擴展爲長數據類型 1、要擴展的短數據類型爲有符號數的 進行符號擴展,即短數據類型的符號位填充到長數據類型的高字節位(即比短數據類型多

原创 內存對齊(Data Structure Alignment)

一.何爲內存對齊,內存對齊的作用         我們現在使用的算機中內存空間都是按照字節(Byte)劃分的,理論上說,似乎對任何類型的變量的訪問可以從任意地址開始,但實際情況則是在訪問特定類型變量的時候經常在特定的內存地址訪問,這就需

原创 CPU工作原理和MMU初探

具體相關內容主要參考自一篇博客,當然有結合其它內容,感謝博主提供的資源,這裏附上參考鏈接,http://www.cnblogs.com/xiangtao/archive/2013/04/11/3014815.html 關於CPU和MMU需

原创 課後習題Chapter2(2.1-4)

2.1-4   題目:有兩個各存放在數組A和B中的n位二進制整數,考慮它們的相加問題。兩個整數的和以二進制形式存放在具有(n+1)個元素的數組C中。請給出這個問題的形式化描述,並寫出僞代碼。 解答: 形式化描述如下:首先,初始化數組C,使

原创 C語言bool類型

聲明:本文爲轉載文章,自己copy過來僅爲學習之用,來源於 http://blog.csdn.net/daheiantian/archive/2011/02/05/6241893.aspx,覺得重要的地方加紅色標註,謝謝博主!    

原创 strcpy函數實現

要求:不使用庫函數,利用C語言實現strcpy函數。 Talk is cheap, show me the code,所以直接上代碼: #include <stdio.h> #include <stdlib.h> #include <st