从首地址开始由低位到高位存储是小端存储,反之则是大端存储
弄熟十六进制,八进制,二进制之间的转换
0123表示八进制数字 0x123表示十六进制数
[signed] short [int] 有符号短整型 2字节 -2的15次方到2的15次方-1
unsigned short [int] 无符号 短整型 0到2的16次方减1
[signed] int 有符号基本整型 4字节 -2的31次方到2的31次方-1
unsigned [int] 无符号 基本整型 0到2的32次方-1
[signed] long [int] 有符号长整型 8字节 -2的63次方到2的63次方-1
unsigned long [int] 无符号 长整型 0到2的64次方-1
[signed] long long [int] 有符号双长整型
unsigned long long [int] 无符号 双长整型
当我们在补码表示法下进行操作时,如果超过了整数的表示范围,就会发生溢出。以下是具体的溢出情况:1. 将 127 加 1:•127 的二进制表示为 01111111。•将 127 加 1:01111111 + 00000001 = 100000000。•由于只有8位,最高位溢出,剩下的低8位为 00000000,但是根据补码表示法,00000000 表示的是 0。•实际上,结果应该是 -128,表示为 10000000。2. 将 -128 减 1:•-128 的二进制表示为 10000000。•将 -128 减 1:10000000 - 00000001 = 01111111。•01111111 表示的是 127。实现细节在硬件层面上,加法和减法操作通过加法器电路来实现。当发生溢出时,加法器会产生进位信号。在8位整数范围内,如果最高位(第8位)产生进位,那么就发生了溢出。在8位有符号整数中使用补码表示法时,当发生溢出时,结果会自动“环绕”,即超过最大正数时变成最小负数,超过最小负数时变成最大正数。通过硬件电路和条件码标志位可以检测溢出情况,并采取相应的处理措施。
设我们使用8位无符号整型(unsigned integer),它的表示范围是从 0 到 255(即 00000000 到 11111111)。具体来说:•0 表示为 00000000。•255 表示为 11111111。溢出情况在无符号整型中,如果计算结果超出了最大值 255,则会发生溢出。此时,结果会“环绕”回到最小值 0 并继续增加。示例:将 255 加 1假设我们要将 255 加 1:1. 计算过程:•255 的二进制表示为 11111111。•1 的二进制表示为 00000001。•11111111 + 00000001 = 100000000。2. 溢出处理:•由于只有8位,最高位(第9位)溢出,剩下的低8位为 00000000。•根据无符号整型表示法,00000000 表示的是 0。因此,255 + 1 的结果为 0。
对于无符号整型,溢出会导致结果“环绕”;对于有符号整型,使用补码表示法时,溢出也会自然“环绕”。
负数是原码取反加一(补码形式)在计算机中都是以补码形式呈现
正数是原码本身(补码形式)
int的范围是-2的31次方到2的31次方减去1
%d有符号十进制数形式
%u无符号十进制数形式
sizeof()既可以计算抽象的数据类型长度也可以是具体的变量的长度
sizeof(123ull) sizeof(10.23f)
浮点型
float 4字节
1.25E4=1.25*10的四次方
存储表现形式 1位符号位
8位阶码
23位尾数
如-100.125 100.125化为二进制数为1100100.001
符号位为1
然后用科学计数法表示为1.100100001 乘2的6加127次方,(127是常数,32位系统下加127)
在IEEE 754标准中,阶码采用偏移表示法(bias),偏移量是为了避免使用符号位表示指数的正负。单精度浮点数的偏移量为 127,双精度浮点数的偏移量为 1023。具体来说,偏移量是为了让指数在二进制表示中总是正数。这样做有以下几个好处:1. 简化硬件设计:不需要额外的电路来处理负数。2. 避免歧义:保证指数始终为正数,避免了正负指数的混淆。
133的二进制数就是它的阶码
则存储为1 10000101 1001000 0100 0000 0000 0000
十六进制表示为c2c84000
数据类型相同才能运算
char 1字节
根据ASCII码进行输出
\t(横向制表符)前面总共空8个字符 char型和int型兼容可进行数运算