二进纸的负数转换为十进制表示需要通过补码转换的:
(1)比如:char i=1;
二进制表示为00000001
(2)short i=~i;
则运算为11111110;
计算机中负数都是以补码的形式存在的,如果要转换为十进制,则要转换为补码的补码(求补码的原则是原码的符号位不变,其余位数取反加1):
10000001+1=10000010
显示出来就是-2。
那么为什么需要补码呢?
这是因为计算机没有减法运算,减法运算都是通过补码实现的,举例如下:
一、
假设两个char类型的数据,如何实现2 -1 运算呢?
实际上计算机是用2+(-1的补码)来完成的
2的表示是00000010
-1的原码是1 0000001
-1的补码是1 1111111
2-1=2+(-1的补码)
2 00000010
-1的补码 11111111
计算结果: 00000001
那么如果计算结果出现负数怎么办呢?
1-2=1+(-2的补码)
1 00000001
-2的补码(符号位不变,原码取反+1) 11111110
计算结果: 11111111
计算机的负数都是补码,如果用十进制来表示,则要复原为原码(对补码求补码),则为10000001
C++基础----指针常量与常量指针
int i=1;
//指针的常量
const int *j=&i; //const放在指针之前,有什么作用?保护指针指向的内存块
//常量指针//
int *const k=&i;//const放在指针之后,有什么作用?保护指针变量对应的内存块
C++基础----ASCII码表
|