字节换算
bit(b)=位
字节(byte)=8位 -128~127 0~255
半字=2字节=16位 -32768~32767 0~65,535
字(word)=4字节=32位 -2147483848~2147483647 0~4,294,967,295
双字=8字节=64位 -9223372036854775808~9223372036854775807 0~18,446,744,073,709,551,615
十进制-1的二进制表示
在IA-32平台使用补码表示带符号的整数
反码:无符号整数相反代码1->0;0->1。
补码:反码+1
过程
在一个字节中1
二进制是0000 0001
反码 1111 1110
补码 1111 1111 即-1
补码从1111 1111 开始递减直到1000 0000表示-128
一个 16位的1的二进制是
0000 0000 0000 0001
补码即-1是
1111 1111 1111 1111
注意不要把8位的1111 1111即-1和15位的1111 1111 1111 1111即-1混淆!同时16位中1111 1111是255
16位编译器和32位编译器
16位下int 2个字节 long 4个字节 short 2个字节
32位下int4个字节 long 4个字节 short 2个字节
64位下int4个字节 long 8个字节 short 2个字节
printf( "size of \"short\" =%lu\n", sizeof(short));
printf( "size of \"char\" =%lu\n", sizeof(char));
printf( "size of \"long\" =%lu\n", sizeof(long));
printf( "size of \"double\" =%lu\n", sizeof(double));
printf( "size of \"int\" =%lu\n", sizeof(int));
printf( "bit of \"int\" =%lu\n", sizeof(int)*8);
各种常数 规则 范例
十进制 一般十进制格式 1234
二进制 以0b开头 0b00111010
八进制 以O开头 O056
十六进制 以开0x头 0x56ab
无正负号整数常数 结尾加上U 300U
长整数常数 结尾加上L 300L
无正负号整数常数 结尾加上UL 300UL
浮点数常数 结尾加上F 4.32F
字符常数 单引号中的文字 ‘a’
字符串常数 双引号中的文字 “hello”
int和Long等的最大最小值MAX和MIN可以参考 limits.h
#whereis limits.h
limits: /usr/include/limits.h
<