首页 > 代码库 > unsigned char 无符号整形 减法运算
unsigned char 无符号整形 减法运算
对于一个字节来说:
unsigned char : 0 ~ 255 0000 0000 ~ 1111 1111
char :-128 ~ 127 -128 ~ -1 1000 0000 ~ 1111 1111 0 ~ 127 0000 0000 ~ 0111 1111
(-128 的补码是1000 0000,它没有对应的原码、反码,其推导是根据 -128 + 127 = -1,即1000 0000 + 0111 1111 = 1111 1111)
计算机CPU只有加法逻辑运算器,对于减法运算,是使用两个数的补码进行加法运算。
1 #include "stdafx.h" 2 #include <stdio.h> 3 4 void print_2(unsigned char val2) 5 { 6 unsigned char *p = (unsigned char*)&val2; //从低位到高位,低端字节计算机 7 8 for (int i = 7; i >= 0; i--) 9 {10 if(val2 & (1 << i))11 printf("1");12 else13 printf("0");14 }15 printf(" ");16 17 }18 19 int main(int argc, char **argv)20 { 21 unsigned char a = 1; //补码:0000 000122 unsigned char b = 2; //补码:0000 001023 unsigned char c = a - b; //补码:0000 0001 + (-2)1111 1110 = (-1)1111 111124 25 printf("%02x,%02x,%02x\n", a, b, c);26 printf("%d,%d,%d\n", a, b, c);27 print_2(a);28 print_2(b);29 print_2(c);30 31 char d = a - b;32 printf("\n%d\n", d);33 34 getchar();35 }
内存中的数据结果是 1111 1111 ,如果按照unsigned char 解释即为255,按照char 解释则为 -1。
unsigned char 无符号整形 减法运算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。