请问char 与 unsigned char 在内存单元中怎样存放?
本帖最后由 xurui71 于 2016-6-6 13:19 编辑很久没有用调试工具,现在不会用了,所以来请教一下。。
char a ;
unsigned char b;
a = 127;//请问这时a放在内存单元是怎样的?
a = a+1;//请问这时a放在内存单元是怎样的?
b = 127;//请问这时b放在内存单元是怎样的?
b = b+1;//请问这时b放在内存单元是怎样的?
还有请问,上面的那个是不是与编译器的不同。。存放结果又会不一样呢? 6666666666666666同问 首先在机器里的存储是用补码的:正数的补码就是原码,也就是二进制表示的形式.127:0111 1111;负数的补码是把对应的正数原码取反再加1,-127: 0111 1111取反1000 0000再加1就是 1000 0001;在内存中的数据的存储是有两种方式大端和小端,大部分是小端,当然也有使用大端的.小端就是说把数据的高位放在内存的低位,在这里我们说一下内存的高低,内存从0x0000 0000开始的所以靠近这边的为高位.
char就一个字节八位,放进没什么区别,127就是 0111 1111或者0x 7f 当它加1后数据会溢出出现的是一个乱码,如果写得有保护的话应该是一个特定的值在那里.
unsigned char 他与char的区别是第一位也表述数据而非符号0-255,那么127 就是0111 1111或者0x 7f 当它加1后就是128,表示出来1000 0000或者0x 80 就是这样没有什么大的区别,因为正数的补码还是原来的.
他们的表示与编译器无关但是与机器有关...... 大神啊。。。可伶我还是没毕业的小白。。 直接去看一下源码,补码,反码。就知道啦
页:
[1]