;整数-5的原码(1字节) 1000 0101
反码 1111 1010 符号位不变其余位按位取反
-5 补码 1111 1011 反码加1得到 补码
求补码还可以 直接绝对值取反加1得到补码 例如:
-5绝对值 0000 0101
1111 1010 取反
-5补码 1111 1011 加1得到补码
求整数-5的绝对值, 补码取反加1得到绝对值
补码 1111 1011
取反 0000 0100
取反加1 0000 0101 = 5
整数存储在intel cpu是按照,小尾方式存储的(也叫本地字节序),网络字节序(大尾存储)
小尾 低字节->低地址
大尾 高字节->低地址
例如:0x12345678
小尾存放是 78 56 34 12
大尾存放是 12 34 56 78
如果把本地字节序整数发送到网络对面的一台机器就需要转换成网络字节序才能发送,
ntohl()来实现从网络字节序到本地字节序的转换。
本地字节序->网络字节序->本地字节序
一个 char 占用1字节 数值表示范围为 有符号的-128 到 127
无符号的数值表示范围为0-255
-1 = 128 论证
128 64 32 16 8 4 2 1
1111 1111 128的补码
-1的补码
1000 0001
1111 1110 + 1
1111 1111
得出 -1 在二进制中等于128
有符号整数 溢出等于最小 也就是说 一个char 等于128 那么溢出等于 -1
-129 溢出 为最大 127
时间: 2024-10-09 17:27:49