1.åè¿å¶çåç ãè¡¥ç
2.计算机原码反码补码问题和进制转换
åè¿å¶çåç ãè¡¥ç
åè¿å¶-çåç æ¯ãåç æ¯åè¡¥ç æ¯ã转æ¢è§åï¼
1ãè´æ´æ°çåç 为äºè¿å¶åé¢å 符å·ä½ï¼
-=ï¼äºè¿å¶ï¼=ï¼åç ï¼
2ãè´æ´æ°çåç =åç åä½ååï¼é¤äºç¬¦å·ä½å¤ï¼ï¼
ï¼åç ï¼=ï¼åç ï¼
3ãè´æ´æ°çè¡¥ç =è´æ´æ°çåç +ï¼
ï¼åç ï¼=ï¼è¡¥ç ï¼
æ©å±èµæï¼
å·²ç¥ä¸ä¸ªæ°çè¡¥ç ï¼æ±åç çæä½å ¶å®å°±æ¯å¯¹è¯¥è¡¥ç åæ±è¡¥ç ï¼
â´å¦æè¡¥ç ç符å·ä½ä¸ºâ0âï¼è¡¨ç¤ºæ¯ä¸ä¸ªæ£æ°ï¼å ¶åç å°±æ¯è¡¥ç ã
âµå¦æè¡¥ç ç符å·ä½ä¸ºâ1âï¼è¡¨ç¤ºæ¯ä¸ä¸ªè´æ°ï¼é£ä¹æ±ç»å®çè¿ä¸ªè¡¥ç çè¡¥ç å°±æ¯è¦æ±çåç ã
ä¾ï¼å·²ç¥ä¸ä¸ªè¡¥ç 为ï¼ååç æ¯ï¼-7ï¼ã
å 为符å·ä½ä¸ºâ1âï¼è¡¨ç¤ºæ¯ä¸ä¸ªè´æ°ï¼æ以该ä½ä¸åï¼ä»ä¸ºâ1âã
å ¶ä½ä¸ä½ååå为ï¼åå 1ï¼æ以æ¯ã
åèèµææ¥æºï¼ç¾åº¦ç¾ç§-è¡¥ç
计算机原码反码补码问题和进制转换
1首先了解 低字节位 和高字节位 看图2字节在内存的排列方式
//int num = ; //0开头代表 8禁止 //("%d",num); //所以打印的是8 int num = 0x; //将占 2 位 printf("%p", &num); /* 要特别 注意 低位 在低字节 高位 高字节 0xFAC0 x 0xFAC1 V 0xFAC2 4 0xFAC3 . */ 看图2
3 printf 不会进行自动转换 void main(){ printf("%d", .3); printf("\n%f", );
getchar();}
请看图3
4 一定要注意数据会溢出数据会溢出请看图4
unsigned short num = ; printf("我有现金:%d元",num);
unsigned short num = +1; printf("我有现金:%d元",num);
上面这样数据就会溢出
5 原理
头文件#include<limits.h> printf("%d", INT_MAX); printf("\n%d", INT_MIN); printf("\n%u", UINT_MAX); //有负号的情况下 0代表正式 1代表负数 // //
6源码反码补码
//1的源码和-1的源码 // // //-1符号为是1
源码反码补码过程//源码
//-1反码1 符号位不变 所有0变1 1变0//
//-1补码 符号位不变 所有0变1 1变0 在补1(在反码基础是+1)// unsigned int num = -1; printf("%d %u", num, num);
虽然补码后二进制相同 但是他们有负号的符号位不算 所以数据不相同
7为什么要用补码 非常重要!!和源化图uboot源码!码的码和乐易云源码
1 (1代表十进制) 2 ( 是转化百易源码网2的源码)
如果我们用2的补码 源码
反码(所有位取反 负号不变)
补码(反码基础 +1)
这时候在相加
1 2的补码 是不是就是-1
-1 源码 反码 补码用补码的原因就是因为可以大大节约计算机的资源
8 数据的取值范围