发布网友 发布时间:2022-04-29 04:18
共1个回答
热心网友 时间:2023-10-11 01:28
负数在24c02中是以补码方式存储的,和在内存储器中是一样的。
2402一个地址存8位,在存16位数的时候应该8位8位的存,具体的方法是:
把a的高八位右移八次变成低八位后强制将他转化成一个unsigned char 写入相应地址;然后将低八位强制转换成unsigned char 再次写入。
读取的时候先读取高八位放入一个unsigned int中,unsigned int左移八位后或上再次读取出的低八位。
追问那比如取a=-100,16位补码为1111 1111 1001 1100,强制转化存入后高八位存的是uchar型的1111 1111吗?还是1000 0000?追答如果你的单片机是手写的驱动,没有硬件i2c,你每次发出int的最高位然后左移一位就行了,读的时候也是把读取的每一位放在一个int里不停的左移。恩···每八位有一个相应位。有硬件i2c的也是差不多的道理。
说白了就是flash只是把你内存中的数据照样存上而已,不会管你什么源码补码的。你自己写程序知道读出来后应该是有无符号的数。
热心网友 时间:2023-10-11 01:28
负数在24c02中是以补码方式存储的,和在内存储器中是一样的。
2402一个地址存8位,在存16位数的时候应该8位8位的存,具体的方法是:
把a的高八位右移八次变成低八位后强制将他转化成一个unsigned char 写入相应地址;然后将低八位强制转换成unsigned char 再次写入。
读取的时候先读取高八位放入一个unsigned int中,unsigned int左移八位后或上再次读取出的低八位。
追问那比如取a=-100,16位补码为1111 1111 1001 1100,强制转化存入后高八位存的是uchar型的1111 1111吗?还是1000 0000?追答如果你的单片机是手写的驱动,没有硬件i2c,你每次发出int的最高位然后左移一位就行了,读的时候也是把读取的每一位放在一个int里不停的左移。恩···每八位有一个相应位。有硬件i2c的也是差不多的道理。
说白了就是flash只是把你内存中的数据照样存上而已,不会管你什么源码补码的。你自己写程序知道读出来后应该是有无符号的数。
热心网友 时间:2023-10-11 01:28
负数在24c02中是以补码方式存储的,和在内存储器中是一样的。
2402一个地址存8位,在存16位数的时候应该8位8位的存,具体的方法是:
把a的高八位右移八次变成低八位后强制将他转化成一个unsigned char 写入相应地址;然后将低八位强制转换成unsigned char 再次写入。
读取的时候先读取高八位放入一个unsigned int中,unsigned int左移八位后或上再次读取出的低八位。
追问那比如取a=-100,16位补码为1111 1111 1001 1100,强制转化存入后高八位存的是uchar型的1111 1111吗?还是1000 0000?追答如果你的单片机是手写的驱动,没有硬件i2c,你每次发出int的最高位然后左移一位就行了,读的时候也是把读取的每一位放在一个int里不停的左移。恩···每八位有一个相应位。有硬件i2c的也是差不多的道理。
说白了就是flash只是把你内存中的数据照样存上而已,不会管你什么源码补码的。你自己写程序知道读出来后应该是有无符号的数。