|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hxliu 于 2017-7-13 17:39 编辑
S1E7
一、
CPU能读懂的最小单位(只能存放0和1):比特位,bit,b
内存机构的最小寻址单位:字节,Byte,B
1Byte == 8bit
一个字节可以表示的最大的数:11111111(二进制),255(十进制),FF(十六进制)
二、
存放signed类型的存储单元中,左边第一位表示符号位
0:正数
1:负数
三、
计算机是用补码形式来存放整数的值
正数的补码是该数的二进制形式
负数的补码
1)先取得该数的绝对值的二进制形式
2)再将第1步的值按位取反
3)最后将第2步的值加1
四、作业
一个字节可以表示的最大的二进制数是1111 1111
由于左边第一位是符号位,因此最大带符号整数是:0111 1111(十进制为127)
用64位存放long long 值(unsigned long long),可以存放的最大整数为2^64-1,这是一个20位十进制数
二进制(补码)转换十进制
看了扩展阅读后懒得用计算器,于是傻傻得写了个笨笨的程序算的2333
代码如下
- #include <stdio.h>
- #include <math.h>
- int main()
- { int a = 1;
- int b = 1;
- int c = 1;
- int d = 1;
- int e = 1;
- int f = 0;
- int g = 0;
- int h = 0;
- int result;
- //abcdefgh分别对应=>位权876543210,这里需要逐个修改。。。后续我...会想办法让他更简洁。。。目前只能这么笨的方法了0.0
-
- //符号位为0时用第一条,为1时用第二条
- //result = a*pow(2,7)+b*pow(2,6)+c*pow(2,5)+d*pow(2,4)+e*pow(2,3)+f*pow(2,2)+g*pow(2,1)+h*pow(2,0);
- result = -a*pow(2,7)+b*pow(2,6)+c*pow(2,5)+d*pow(2,4)+e*pow(2,3)+f*pow(2,2)+g*pow(2,1)+h*pow(2,0);
- printf("二进制转换为十进制result = %d\n",result);
-
- return 0;
- }
复制代码
十进制转二进制
.
.
.
.
.
.
GG暂时写不出来0.0
猜测如下图。。。也不知道对不对……
打印-1和255
unsigned char(0~255)
signed char (-128~127)
%c打印char类型字符
%d打印带符号数
%u打印无符号数
hh表示signed char 和unsigned char 长度
代码如下
- #include <stdio.h>
- int main()
- {
- signed char i;
- unsigned char j;
-
- i = 255;
- j = 255;
-
- printf("signed char %hhd\n",i);
- printf("unsigned char %hhu\n",j);
-
- return 0;
- }
复制代码
scanf函数
①转换字符
c:读取一个字符
d:读取一个十进制整数(可加符号)
x:读取一个十六进制整数(可加符号);十六进制数以0x或0X开头
②附加参数
该参数的个数由格式化字符串决定
普通变量名前加&符号
作业代码如下
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int a;
- double result;
-
- printf("请输入一个整数:");
- scanf("%d",&a);
-
- result = pow(a,5);
- printf("%d的五次方是:%.2f\n",a,result);
-
- return 0;
- }
复制代码 |
评分
-
查看全部评分
|