前言:
今天你们对“c语言输入多个数据”大概比较珍视,小伙伴们都需要了解一些“c语言输入多个数据”的相关知识。那么小编同时在网络上汇集了一些关于“c语言输入多个数据””的相关内容,希望各位老铁们能喜欢,咱们一起来了解一下吧!1、无符号数
8位无符号数 max 11111111 = 2^7+2^6+2^5+…+2^0 = 255
Min 0 所以取值为[0,255]
16位无符号数 同理可求取值范围为 [0,65535]
0000 0001 1 127*2 = 254 [0,255] 256个数字0111 1111 127 [0,255] 无符号的数列 1000 0001 -1 [-128,127] 有符号的数列1111 1111 -1270000 0000 01000 0000 -1282、数据溢出
C语言 char 范围 一个字节
无符号 max 11111111 = 255 min 00000000 = 0
无符号数据范围 [0,255] 一共有256个数
有符号,最高位代表符号位。1表示负数,0表示正数
在计算机中,当要表示的数据超出计算机所使用的数据的表示范围时,则产生数据的溢出。
负数 1111 1111 = -127 1111 1110 = -126 1111 1101 = -125 。。。。。 。。。。。 1000 0001 = -1 1000 0000 = ? //结果是-128 这里我们只需知道,不需深究 0000 0000 = 0 0000 0001 = 1 0000 0010 = 2 。。。。。 。。。。。 0111 1111 = 127 综上我们可以看出 有符号数据范围是[-128,127]
C语言 char c = 129; printf("%d",c); //输出结果-127 分析: char c定义的默认是有符号的字符数据。上述给出有符号的数据范围是[-127,128] 所以产生数据溢出 129是整形数据 int类型 假设16位机器上 int 占两个字节 129原码 0000 0000 1000 0001 129反码 0000 0000 1000 0001 129补码 0000 0000 1000 0001 取后八位 1000 0001 作为原码存储 原码 1000 0001 反码 1111 1110 补码 1111 1111 -127 同理 char c = -129; printf("%d",c); //输出结果127 -129原码 1000 0000 1000 0001 -129反码 1111 1111 0111 1110 -129补码 1111 1111 0111 1111 取后八位 0111 1111 作为原码存储 正数三码一样 原码 0111 1111 反码 0111 1111 补码 0111 1111 127 so 整数 -129 -128 -127 -126 -125 -124 -123 。。。。。0 1 2。。。。127 128 129 130内存表示的数 127 -128 -127 -126 -125 -124 -123 。。。。。0 1 2。。。。127 -128 -127 -126
3、位运算1. 位运算(与,或,非,异或)
与 AND 两位同时为1 才为1 符号表示为 &
10010 & 01010 下边表示 只有红色部分才同时为1
10010 所以 10010 & 01010 = 00010 前面三个0去掉
01010 10010 & 01010 = 10
或 OR 两位一方为1就为1 符号表示为 |
10010 | 01010 下边表示
10010 所以 10010 | 01010 = 11010
01010
非 NOT 取反操作 符号表示为 ~
~10010 = 01101
异或 两位不同(异)则为1 ,相同为0 符号表示为 ^
10010 ^ 01010 下边表示
10010 所以 10010 ^ 01010 = 11000
01010 01010
Tips X^y^y = X 加密操作
10010 ^ 01010 ^ 01010 = 10010
对一个数而言 进行两次同样的异或操作最后得到的数是它本身
标签: #c语言输入多个数据 #c语言 知乎 #c语言图形题数字 #c语言负整数在内存中的存储形式是 #c语言怎么输入字母符号