Ⅰ c語言中,一個位元組到底有多少個字元
我真的搞不清楚你到底想問什麼,而且你有的表述也不準確嚴謹
所以只好把基本的單位先說下。
比特(bit)即一個二進制位 例如100011就是6比特
位元組(byte)這是計算機中數據類型最基本的單位了,8bit 組成1byte
字(word)銀悉兩個byte稱為一個word,所以字大小應該是16位bit,共兩位元組
雙字(double word 簡寫為DWORD)見名知意,兩個字,四個位元組,32bit
在C語言中,每種數鋒簡乎據類型都有其存儲長度。而且在特定的平台和特定的編譯器下是不一樣的。
由於WIN32平台用的很多,使用visual studio來做C程序的也有很多(我就是使用visual studio 6.0來學習C語言的),所以我說下這種情況(在Visual C++ 2005 中的)。
char 字元型 佔1byte 即8位,一個char型數據(例如:a、#、!之類的)用了1個位元組來存儲
unsigned char 無符號的字元型 佔1byte 即8位 它主要是為了能夠兼容擴展ASCII碼,由於 char 由8位表示表示範圍為 -128 - +127,無法表示帶上擴展ASCII碼總共256個字元所以如果把 8位中的最高位符號位也用來計數,就可以正好表示256個字元,unsigned char 表示範圍為 0 - 255 正好256個數可以對應包含擴展ASCII碼在內的共計256個ASCII字元
漢字在計算機中存儲是使用機內碼(一種數字編號)來存儲的,而常用漢字不過是幾萬個,如果用16位比特(即2的16此方等於65536)就可以表示了,所以漢字字元存儲使用了兩個位元組。每兩個位元組即16bit對應一個漢字。
int 整型數據 佔4byte 即32位,一個int型數據的長度用了4個位元組來存儲
short 短整型 佔2byte 即16位,兩個位元組。
long 長整型 佔4byte 即32為咐鬧,四個位元組
float 單精度浮點型 佔4byte 即32位,四個位元組
double 雙精度浮點型 佔8byte 即64位,八個位元組
假如你使用的不是 visual studio 編譯器 或者不是在win32環境下編程,以上的陳述可能就不對,我建議你查看一下 可以使用int i = sizeof(char)或者
sizeof(int)來看看i的值,如果i == 4,表示一個當前的數據類型佔四個位元組
Ⅱ C語言中unsigned short和short位元組
佔用位元組相同。
但unsigned char 表示無符號,所以范圍在 0-65535 short的數值范圍在-32767 - 32768 之間。
short 型拿出最高位作為符號位,所以可以表示的數據范圍要比 unsigned short 要短。
(2)c語言無符號單位元組擴展閱讀:
1、unsigned char是無符號位元組型,char類型變數的大小通常為1個位元組(1位元組=8個位),且屬於整型。整型的每一種都有無符號(unsigned)和有符號(signed)兩種類型。
2、C語言中,short是定義一種整型變數家族的一種。例如short i;表示定義一個短整型的變數i。
長度依據程序編譯器的不同short定義的位元組數不同,標準定義short短整型變數不得低於16位,即兩個位元組。
Ⅲ c語言無符號單位元組數的八位以內的循環右移循環左移怎麼寫
//參數說明:x=輸入的值n移位數
//循環左移
#defineROTATE_LEFT(x,n)((x)<<(n))|((x)>>((8*sizeof(x))-(n)))
//循環右移
#defineROTATE_RIGHT(x,n)((x)>>(n))|((x)<<((8*sizeof(x))-(n)))
//使用例子:
#include<stdio.h>
intmain()
{
unsignedcharz=0x81,r=0,m_MoveBits=1;
r=ROTATE_LEFT(z,m_MoveBits); //循環左移1位
printf("0x%02X循環左移後=0x%02X ",z,r);
z=ROTATE_RIGHT(r,m_MoveBits); //循環右移1位
printf("0x%02X循環右移後=0x%02X ",r,z);
z=1; r=0; //初始化z=1
m_MoveBits=4; //移4位
r=ROTATE_LEFT(z,m_MoveBits); //循環左移1位
printf("0x%02X循環左移後=0x%02X ",z,r);
z=ROTATE_RIGHT(r,m_MoveBits); //循環右移1位
printf("0x%02X循環右移後=0x%02X ",r,z);
return0;
}