CSAPP/One_chapter/数据的存储和表示

字数据

1.每台计算机都有一个字长w,字长的宽度实际就是该机器中指针类型的宽度(32位字长机,64位字长机)

每台机器中的指针类型数据的宽度是一定的,也就是说不同类型的指针的sizeof都是相同的,这个值只与机器有关,与类型无关,对于一个w位机器来说,编址长度为\(2^w\),即有\(2^w\)个字节(因为是俺字节编址,不是按字),这里的w就是字长

存储规则

1.大端存储:高位地址存低位数据,低位地址存高位数据
2.小端存储:低位地址存低位数据,高位地址存高位数据

地址认为是从左到右逐渐递增的
一般来说编译与存储方式无关,因为代码相同,在不同机器上就依靠相应机器上的编译器就行了,但是有时候存储方式会发生问题:网络传输和阅读机器级程序
explain:发送数据总是从低位开始,到高位结束,当不同存储方式的机器互相通信时,会出现字节反序的现象;

这里最后四字节的内容就是小端存储表示的,将其反过来就是0x200b43;
同样的如果用大端机器的char类型读小端存储的long类型,也会出现错误,这种错误不只是范围问题,还有读取顺序的问题

数据表示

1.有符号数

补码表示

2.无符号数

 

Note:

1.C/C++都支持无符号数,Java只支持有符号数

posted @ 2023-01-23 11:31  兮何其  阅读(21)  评论(0)    收藏  举报