整形提升
一、简介
在进行算术运算时,CPU只能进行整形即以上类型精度的运算,若运算的数据不满4个字节则至少提升到4个字节再进行运算。
二、原因
计算机通过CPU相应的运算器件执行运算,该运算器件操作的字节长度一般为int的字节长度。对于两个char类型的数字相加,cpu难以实现两个8个比特位(即一个字节)直接相加的运算,都要先转换为int或unsigned int类型,再送入CPU内进行相加。
三、规则
1.提升:根据数据类型进行提升
(1)对于有符号数,正数高位都补0,负数高位都补1
(2)对于无符号数,高位全补0
2.运算:CPU进行整形运算
3.截断:将高位截断丢弃,其余位不变。
四、例题
int main() {
char a = 3;
//补码00000011
//提升00000000 00000000 00000000 00000011
char b = 127;
//补码01111111
//提升00000000 00000000 00000000 01111111
char c = a + b;
//00000000 00000000 00000000 00000011
//00000000 00000000 00000000 01111111
//00000000 00000000 00000000 10000010 相加
//10000010 截断 (即c的补码为10000010)
printf("%d", c);
//打印形式为%d,char c要发生整形提升
//负数前全补1
//11111111 11111111 11111111 10000010 ——补码
//11111111 11111111 11111111 10000001 ——反码
//10000000 00000000 00000000 01111110 ——反码
//结果为-126
return 0;
}
与char循环异曲同工,待加链接。
类型转换
一、简介
若在运算时两个操作数的类型不一样,则要先转换为优先级高的类型(容量和精度越大,优先级越高),再进行运算。
二、规则
1.需要类型转换的运算包括printf,==,sizeof?
2.优先级
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 文心一言 VS 讯飞星火 VS chatgpt (28)– 算法导论5.1 3题
三、假设你希望以1/2的概率输出0与 1。你可以自由使用一个输出0或1的过程 BIASED-RANDOM。它以某概率 p 输出1,概率 1-p 输出0,其中 0 文心一言: 可以使用贝叶斯公式来计算无偏的结果。假设我们进行了n次试验,其中BIASED-RAND…